This is the code that I'm currently using:
A = interpolate; averg = mean([A(1:end-2),A(3:end)],2); streaking = ; for idx = 2:size(A,2)-1 streaking(:,idx) = (abs(A(:,idx)-averg(idx))./averg(idx))*100; end
The full error message:
>> Attempted to access averg(2); index out of bounds because numel(averg)=1.
>> Error in rad_cal2 (line 817)
streaking(:,idx) = (abs(A(:,idx)-averg(idx))./averg(idx))*100;
interpolate is a matrix
No products are associated with this question.
You are using linear indexing to index into A, and so the output is a row vector. For example: A(1:end-2) will take all terms except for the last two in the matrix A, and create a row vector. Concatenating A(1:end-2) with A(3:end) creates a really long row vector. The mean of a row vector along the row, takes the average of all the elements which produces a scalar value for averg.
If you want to take the ROWS 1:end-2, then you can index into A using row column indexing:
For what values are you trying to find the means? How are you trying to arrange the values in A to find the means? Be careful how you find that matrix ([A(1:end-2),A(3:end)]) - you may want to add an intermediate variable to calculate it, and then find the mean.
A = interpolate; B = (A(1:end-2,:) + A(3:end,:))/2; averg = mean(B,2)