1

ベクトルがあるとしましょう:

dx = [ 1 10 20 ]

ここで、dxの値ごとに、0から100までの線形間隔のベクトルをdxのステップで生成して、次のようなものを取得します。これをvalsと呼びます。

vals = 0   0  0
       1  10 20
       2  20 40
       3  30 60
       .  .   .
       .  . 100
       . 100
      100

そのため、さまざまなサイズのベクトルのベクトルに到達します。最終的には、関数をvalsに適用し、内部ベクトルを合計して、結果が3つの要素を持つベクトルになるようにする必要があります。これについて行く最良の方法は何ですか?

4

2 に答える 2

4

arrayfunこれはとで解決できますcellfun

dx = [1 10 20];
vals = arrayfun(@(x)0:x:100, dx, 'UniformOutput', false);

result = cellfun(@(x)sum(someFunction(x)), vals);

ここsomeFunctionで、はベクトルに適用する関数です。

于 2013-03-26T22:06:38.377 に答える
0

列のサイズが同じではなく、配列に収まらないため、結果をリストに入れました。

dx = [1 10 20];
l = 1 + 100 ./ dx;
% disp(l); % so you can see what the above calculation did
vals = {linspace(0,100,l(1,1))', linspace(0,100,l(1,2))',linspace(0,100,l(1,3))}
% the (') after the linspace() function is a matrix transpose since linspace() returns a row vector
% lists work like matrices except you use list_name{m} as opposed to matrix_name(m,n)

ベクトル化を楽しんでください!

于 2013-03-26T22:03:44.450 に答える