4

次の式を評価する必要があります(疑似数学表記で):

∑<sub>ipi⋅<b>n

ここpで、 は 3 要素ベクトルの行列で、 はn3 要素ベクトルです。次のように for ループを使用してこれを行うことができますが、これをベクトル化する方法がわかりません。

p = [1 1 1; 2 2 2];
n = [3 3 3];
s = 0;
for i = 1:size(p, 1)
    s = s + dot(p(i, :), n)
end
4

3 に答える 3

5

なぜ物事を複雑にするのですか?単純な行列の乗算はどうですか:

s = sum(p * n(:))

ここで、はM行 3 列の行列でpあると想定されます。

于 2013-06-18T08:25:27.717 に答える
0
----------


% Is it the same for this case?


----------


n = 200;                  % depending on the computer it might be

m = 1000*n;               % that n needs to be chosen differently

A = randn(n,m);

x = randn(n,1);

p = zeros(m,1);

q = zeros(1,m);
tic;

for i = 1:m

    p(i) = sum(x.*A(:,i));
    q(i) = sum(x.*A(:,i));
end
time = toc; disp(['time = ',num2str(time)]);
于 2016-05-19T12:57:59.280 に答える
0

私はあなたがそれを行うことができると思いますbsxfun:

sum(sum(bsxfun(@times,p,n)))
于 2013-06-18T08:25:20.567 に答える