Goal:
- Have for loop repeatedly create matrices of random integers
- Create new matrix where columns = variance for each row of random integer matrices
- Compare variance to increment ranging from 0:0.01:4 (0-4 in increments of 0.01) and retain each matrix of 0s and 1s generated this way
The following code produces the desired results when the increment = 1 (not 0.01)
T = 10;W = zeros(3,10);for trial = 1:T mtest = randi([1,5],3,4) W(:,trial) = var(mtest,0,2);endminc = zeros(3,10,5);for mindex = 0:1:4 minc(:,:,mindex+1) = W >= mindexend
Problem 1: The same code does not work when the increment is set to 0.01:
linc = zeros(3,10,401);for lindex = 0:0.01:4 linc(:,:,lindex+1) = W >= lindexend
Error = Index in position 3 is invalid. Array indices must be positive integers or logical values.
Problem 2: After much reading, I think the problem is that "lindex+1" produces indices of 1.01, 1.02…etc. Yet both of the below solutions produce the same error.
Solution 1: Add 1 to remove 0 from index; multiply by 100 such that index should proceed as 100, 101, 102…etc.
linc = zeros(3,10,401);
for lindex = 0:0.01:4
linc(:,:,(lindex+1)*100) = W >= lindex
end
Solution 2: Start index at 0.01 instead of 0 and multiply by 100 such that index should proceed as 100, 101, 102…etc.
linc = zeros(3,10,401);for lindex = 0.01:0.01:4 linc(:,:,lindex*100) = W >= lindexend
Why does the code work if increment = 1 but not 0.01? How can I fix this? Thank you in advance, this is a wonderful community.
Best Answer