有没有更好的方法在Matlab中写这个?

时间:2011-04-13 14:21:51

标签: matlab

我有这段代码,但写一下它必须有更好的效率:

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)];

矩阵中有两行。第一行在rt(1,5)结束。

我还有以下代码:

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)];

如果没有xy(p1rows,2),我如何在matlab中获得p1rows值?

我还有下面的代码依赖于行数:

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;

任何更简洁有效地编写此代码的方法都将非常受欢迎。

1 个答案:

答案 0 :(得分:3)

最有可能的是,Relative_Axis_Moves中会有两行以上,因为第二行的差异会评估为数组。

无论如何,写一个简洁的方法是

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