Есть ли лучший способ написать это в Matlab? - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть этот код, но должен быть более эффективный, чтобы написать его:

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);<br> RAMrow=RAMrow(1);<br> for i=1:RAMrow<br> L(i)= norm(Relative_Axis_Moves(i,:));<br> end<br> L=L';<br> L(RAMrow+1)= 0;<br>

Любой способ написать этот код более кратко и эффективно будет принята с благодарностью.

1 Ответ

3 голосов
/ 13 апреля 2011

Скорее всего, в Relative_Axis_Moves будет более двух строк, поскольку различия во втором ряду оцениваются как массивы.

Во всяком случае, компактный способ написать это

Relative_Axis_Moves = [RealTrans(1,1:5);diff(RealTrans(:,1:5),1,1)];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...