assigning to vectors within bsxfun

I do not know why this operation throws an error in bsxfun
c3 = bsxfun(@(x,y,z,m,op) x(1:y(:),:) = z(1:op:op*y(:),1) + m(:), X, Y, Z, M, Option);
The loop I am trying to vectorize is this :
for k=1:Count
X(1:Y(k),k)= Z(1: Option: Option* Y(k),1) + M(k);
end
what am I doing wrong?

1 件のコメント

Jan
Jan 2013 年 4 月 17 日
I'm interested in a comparison of the runtimes. I do not see a benefit for the vectorized versions at first glance.

サインインしてコメントする。

回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2013 年 4 月 16 日
編集済み: Andrei Bobrov 2013 年 4 月 16 日

1 投票

Z1 = bsxfun(@plus,Z(1:op:op*max(Y)),M(:).');
s = size(Z1);
Z2 = zeros(s);
Z2(sub2ind(s,Y,1:s(2))) = 1;
x = Z1.*flipud(cumsum(flipud(Z2)));

カテゴリ

ヘルプ センター および File ExchangeGPU Computing についてさらに検索

タグ

質問済み:

2013 年 4 月 16 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by