Matlab: умножить ячейку на вектор - PullRequest
1 голос
/ 07 ноября 2011

В настоящее время я делаю это:

x1 = {...}; %a 1xn cell with each element being a column vector
w = [...]; %some column vector
result = zeros(n,1);

% now I want to multiply each vector in x by w

for i = 1:n
  result(i) = w'*cell2mat(x1(i));
end

Это работает, конечно, но идея Matlab состоит в том, чтобы использовать оптимизированное векторное и матричное умножение и т. Д. Так что я, вероятно, что-то делаю не так.Есть ли лучший способ сделать вышеописанное с точки зрения производительности?

Ответы [ 2 ]

4 голосов
/ 07 ноября 2011

Я думаю, что вы можете заменить вашу for петлю просто:

result = w'*cell2mat(x1);
0 голосов
/ 08 ноября 2011

В качестве альтернативы вы можете использовать

result = cellfun(@(x) w'*x,x1);

Хотя я думаю, что другой ответ будет быстрее.

...