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你可以用and解决这个问题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 回答