0

こんにちは、次の cellfun 操作があります。

b = cellfun(@(x) nansum(cross(u{1},x)),r,'UniformOutput',false);

ここで、u と r はベクトルです。外積の結果に I というスカラーを掛けたいのですが、それは総和の中になければなりません。私は単に行うことができます:

b = cellfun(@(x) nansum(I.*cross(u{1},x)),r,'UniformOutput',false);

これは機能しますか?

実際に試してみたところ、次のようになりました。

Matrix dimensions must agree.

Error in ==> cellcross>@(x)nansum(mag.*cross(u{1},x)) at 2
    b = cellfun(@(x) nansum(mag.*cross(u{1},x)),r,'UniformOutput',false);

Error in ==> cellcross at 2
    b = cellfun(@(x) nansum(mag.*cross(u{1},x)),r,'UniformOutput',false);

助言がありますか?

アップデート:

b = cellfun(@(x) nansum(bsxfun(@times, mag(:),cross(u{1},x))),r,'UniformOutput',false);
4

1 に答える 1

1

OK、以下の長い議論に基づいて、私は今あなたの問題を把握しています. 将来の参考のために: もう少しコンテキスト/詳細を提供すると、そのような議論を防ぐことができます.

とにかく、これを試してください:

b = cellfun(@(x) nansum(...
    mag.* subsref(cross(u{1},x), struct('type', '()', 'subs', {':',':',3})) ),...
    r, 'UniformOutput',false);

最も美しい解決策ではありませんが、それはあなたが求めることをします。

于 2012-08-30T21:31:03.113 に答える