Matlab: Repmat и ортогональные векторы - PullRequest
0 голосов
/ 23 ноября 2011

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

   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

1 Ответ

2 голосов
/ 23 ноября 2011

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

b_vect = reshape([1 2],[1 1 numel(b_vect)]);
...