Venkat S. Rao
Venkat S. Rao

Reputation: 1110

Is there a better way to write this in Matlab?

I have this code, but there must be a better efficient to write it:

rt= RealTrans;
rtsize=size(rt);
rtrows=rtsize(1);
Relative_Axis_Moves=[rt(1,1) rt(1,2) rt(1,3) rt(1,4) rt(1,5);
rt(2:rtrows,1)-rt(1:rtrows-1,1) rt(2:rtrows,2)-rt(1:rtrows-1,2)
rt(2:rtrows,3)-rt(1:rtrows-1,3) rt(2:rtrows,4)-rt(1:rtrows-1,4)
rt(2:rtrows,5)-rt(1:rtrows-1,5)];

There are two rows in the matrix. The first row ends at rt(1,5).

I also have the following code:

p1size=size(p1); 
p1rows=p1size(1); 
flank_edge_point=[0 0 0; p1(2:p1rows,2)-p1(1:p1rows-1,2) xy(2:p1rows,1)-xy(1:p1rows-1,1) xy(2:p1rows,2)-xy(1:p1rows-1,2); 0 0 xy(p1rows,2)];

How do i get xy(p1rows,2) value in matlab without p1rows?

I also have the code below which relies on the number of rows:

RAMrow=size(Relative_Axis_Moves);
RAMrow=RAMrow(1);
for i=1:RAMrow
L(i)= norm(Relative_Axis_Moves(i,:));
end
L=L';
L(RAMrow+1)= 0;

Any way to write this code more succinctly and efficiently would be greatly appreciated.

Upvotes: 0

Views: 103

Answers (1)

Jonas
Jonas

Reputation: 74940

Most likely, there will be more than two rows in Relative_Axis_Moves, since the differences in the second row evaluate to arrays.

Anyway, a compact way of writing this is

Relative_Axis_Moves = [RealTrans(1,1:5);diff(RealTrans(:,1:5),1,1)];

Upvotes: 3

Related Questions