2013-06-25 2 views
0

я создаю массив 1x7 с векторной составляющей (поэтому фактический размер 1x7x3) этим кодом:MATLAB - компонент массива и умножения матриц

[half_phi half_theta] = meshgrid(-90:30:90, 0); 
[half_x half_y half_z] = sph2cart(degtorad(half_phi), degtorad(half_theta), 1); 
halfDir = cat(3, half_x, half_y, half_z) 

Что я хочу делать дальше, чтобы сделать матрицу 3x3 умножьте с каждым вектором и, наконец, верните также массив 1x7x3, как это сделать в сжатом виде?

Спасибо.

ответ

0

Это то, что вы хотите?

A=rand(1,7,3); 
B=rand(3,3); 

C=reshape(reshape(A,1*7,3)*B,[1,7,3]); 

или, может быть

C=reshape(reshape(A,1*7,3)*B',[1,7,3]); %%% with B' instead of B 
+0

Второй 'reshape' не обязательно требуется. Предполагая, что 'C' еще не выделен, вы можете сделать:' C (1,:,:) = reshape (A, 1 * 7,3) * B; ' – horchler