Matlab: Repmat и ортогональные векторы

У меня есть три вектора, которые ортогональны

   b_vect = [1 2]
   L_vect = [10 20 30]
   f_vect = [100 200 300]

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

   b_arr = repmat(b_vect , [length(f_vect), length(L_vect), 1])   % Wrong?!
   L_arr = repmat(L_vect , [length(f_vect), 1, length(b_vect)])   % Good!
   f_arr = repmat(f_vect', [1, length(L_vect), length(b_vect)])  % Good!

Однако это идет не так из-за ориентации b_vect. Для f_arr можно было взять повернутый вектор f_vect'$, но как это сделать в случае b_vect?

   size(b_arr)
   size(L_arr)
   size(f_arr)

Произведение «элемент за элементом», например, тогда будет

   product = b_arr.*L_arr.*f_arr

person FRidh    schedule 23.11.2011    source источник


Ответы (1)


Я думаю, вы должны сделать:

b_vect = reshape([1 2],[1 1 numel(b_vect)]);
person Oli    schedule 23.11.2011
comment
Действительно, в основном мне нужно: b_vect_shape = reshape(b_vect, [1 1 length(b_vect)]) и использовать его в b_arr - person FRidh; 23.11.2011