微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有更好的方法可以在Matlab中编写此代码?

如何解决有没有更好的方法可以在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)];
我如何在没有
p1rows
的情况下在matlab中获得
xy(p1rows,2)
的值? 我下面还有依赖行数的代码
    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;
任何更简洁有效地编写此代码方法将不胜感激。     

解决方法

likely6ѭ中很可能会有多于两行,因为第二行中的差异计算为数组。 无论如何,一种紧凑的写法是
Relative_Axis_Moves = [RealTrans(1,1:5);diff(RealTrans(:,1:5),1,1)];
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。