2015-07-29 3 views
0

Я пробую векторизацию цикла для цикла, но он не работает для меня. Мой 'цикл' являетсяMatlab - Векторизация некоторых размеров массива?

for k = 1:N 
R(n,n,k) = R(n,n,k) - SE3(k,k); 
end 

и векторизации это

diagSE3 = diag(SE3); 
R(n,n,1:N) = R(n,n,1:N) - diagSE3(1:N); 
+1

Каковы желаемые результаты? Можете ли вы показать нам цикл 'for', который делает то, что вы хотите? – beaker

+1

Вероятно, это ошибка размерного несоответствия - вам может понадобиться 'squeeze' и/или транспонирование на выходе' diag'. В будущем укажите любые ошибки или другие проблемы, которые вы получаете, никогда не говорите, что код «не работает», – nkjt

ответ

0

С

R(n,n,1:N) = R(n,n,1:N) - diagSE3(1:N) 

вы пытаетесь вычесть вектор (N х 1) из 3-мерного массива с размеры 1 x 1 x N. Это можно отремонтировать, используя squeeze:

R(n,n,1:N) = squeeze(R(n,n,1:N)) - diagSE3(1:N) 
Смежные вопросы