Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 具有不同步长的线性间隔向量的向量_Matlab_Vectorization - Fatal编程技术网

Matlab 具有不同步长的线性间隔向量的向量

Matlab 具有不同步长的线性间隔向量的向量,matlab,vectorization,Matlab,Vectorization,假设我们有一个向量: dx = [ 1 10 20 ] 现在我们要为dx中的每个值生成一个0-100的线性间隔向量,以dx为步长,这样我们可以得到如下结果,称之为VAL: vals = 0 0 0 1 10 20 2 20 40 3 30 60 . . . . . 100 . 100 100 这样我们就得到了一个大小不同的向量。最后,我们将要对VAL应用一个函数,然后我们需要对

假设我们有一个向量:

dx = [ 1 10 20 ]
现在我们要为dx中的每个值生成一个0-100的线性间隔向量,以dx为步长,这样我们可以得到如下结果,称之为VAL:

vals = 0   0  0
       1  10 20
       2  20 40
       3  30 60
       .  .   .
       .  . 100
       . 100
      100
这样我们就得到了一个大小不同的向量。最后,我们将要对VAL应用一个函数,然后我们需要对内部向量求和,这样结果将是一个包含3个元素的向量。
最好的方法是什么?

我将结果放在一个列表中,因为列的大小不同,并且它不能放入数组中

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)

享受矢量化的乐趣

我将结果放在一个列表中,因为列的大小不同,并且它不适合数组

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)
享受矢量化的乐趣

您可以使用arrayfun和cellfun解决此问题:

其中someFunction是要应用于向量的函数

您可以使用arrayfun和cellfun解决此问题:


其中someFunction是要应用于向量的函数

我建议您不要调用数组长度,因为这是一个常用内置函数的名称。这只适用于固定长度的dx。我在找可伸缩的东西。无论如何谢谢你@乔纳斯:谢谢你的更正,我的倍频程/Matlab有点生锈了我建议您不要调用数组长度,因为这是一个常用内置函数的名称。这只适用于固定长度的dx。我在找可伸缩的东西。无论如何谢谢你@乔纳斯:谢谢你的更正,我的倍频程/Matlab有点生锈了这就是我要找的!我对arrayfun和cellfun没有任何经验,所以我还得和他们多玩一些。谢谢这就是我要找的!我对arrayfun和cellfun没有任何经验,所以我还得和他们多玩一些。谢谢