Row index exceeds matrix dimensions

Hi
I have a 143x4 matrix, which looks like this
A=[ 1 556037.025 6237642.046 5.964;
1 556037.035 6237642.041 5.960;
1 556037.028 623742.041 5.967;
2 556032.654 623730.067 10.368;
2 556032.652 623730.060 10. 364;
4 556042.000 623730.000 5.000;
4 556042.002 623730.005 5.010] ;
Column 1 is the point number, column 2-4 are X,Y,Z coordinates.
Each point is measured between 1 and 5 times.
My code is:
A=load('Test.txt');
A=sortrows(A);
T=array2table(A);
m=varfun(@mean,T,'GroupingVariables',1);
out=A;
out(:,2:end)=out(:,2:end) - m{A(:,1),3:end}
I get the error Row index exceeds table dimensions
I have tried to test different scenarios and the error occurs when a point is missing, for example if there is no point number 7, so the first column goes from 6 to 8.
Any idea what is wrong?

4 Comments

Which line is givng you the error? I think what you have shown is not a complete code.
The error is caused by this line:
out(:,2:end)=out(:,2:end) - m{A(:,1),3:end}
The complete code is updated now
Hi
It works until the numbers in column 1 skips a number (See updated revision). If the point number skips from 2 to 4 without having a point number 3, the error occurs

Sign in to comment.

 Accepted Answer

T = array2table(A);
m = varfun(@mean,T,'GroupingVariables',1);
out = A;
[~,~,ii] = unique(A(:,1));
out(:,2:end) = out(:,2:end) - m{ii,3:end};

More Answers (0)

Products

Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!