Matlab 将函数逐行应用于向量

Matlab 将函数逐行应用于向量,matlab,function,loops,vector,Matlab,Function,Loops,Vector,我试图将一个函数应用于向量,其中对于每一新行,应用相同的函数,但变量会发生变化。例如,如果我有一个带有N行的向量: A = [1.2; 1.5; 1.8; 2.3; 2.7; 2.8; 2.9]; 我想从n=行号的每一行减去n*0.1。因此,第2行中的1.5将被0.2(2*0.1)减去,第6行中的2.8将被0.6(0.1*6)减去,依此类推 为了澄清,我想要一个函数对我的文件说,这是行n,我想用n减去行n乘以0.1。我希望代码能够逐行读取文件,因此最终结果是一个向量,它对每一行执行了上述操作。

我试图将一个函数应用于向量,其中对于每一新行,应用相同的函数,但变量会发生变化。例如,如果我有一个带有
N
行的向量:

A = [1.2; 1.5; 1.8; 2.3; 2.7; 2.8; 2.9];
我想从
n=行号的每一行减去
n*0.1
。因此,第2行中的
1.5
将被
0.2(2*0.1)
减去,第6行中的
2.8
将被
0.6(0.1*6)
减去,依此类推

为了澄清,我想要一个函数对我的文件说,这是行
n
,我想用
n
减去行
n
乘以
0.1
。我希望代码能够逐行读取文件,因此最终结果是一个向量,它对每一行执行了上述操作。我认为需要一个循环


我确信这个解决方案很简单,但我不知道怎么做。

我相信这应该可以解决问题:

A
    1.2000
    1.5000
    1.8000
    2.3000
    2.7000
    2.8000
    2.9000

b = A-(1:numel(A)).'*0.1
b =
    1.1000
    1.3000
    1.5000
    1.9000
    2.2000
    2.2000
    2.2000
它所做的是用值
1:numel(a)
创建一个列向量,因此
[1;2;3…]
,然后将每个值乘以
0.1
。然后从原始向量中减去该向量

如您所见,这里有一个点,
。在这里,这并不是真的必要,但将其包括在内是一个很好的实践。如果没有点,
将生成a,而不是a。当然,转置将水平向量转换为垂直向量

为了满足需求,谁可以只使用
bsxfun、permute和reforme同时做饭和盖房子呢

如果你想用矩阵来做这件事,你可以使用,或者,或者更棒的,像这样:

A = magic(5);

b = bsxfun(@minus, A, [1:size(A,1)].'*0.1)
b =
   16.9000   23.9000    0.9000    7.9000   14.9000
   22.8000    4.8000    6.8000   13.8000   15.8000
    3.7000    5.7000   12.7000   19.7000   21.7000
    9.6000   11.6000   18.6000   20.6000    2.6000
   10.5000   17.5000   24.5000    1.5000    8.5000

更多维度?组合
bsxfun

我认为这应该可以做到:

A
    1.2000
    1.5000
    1.8000
    2.3000
    2.7000
    2.8000
    2.9000

b = A-(1:numel(A)).'*0.1
b =
    1.1000
    1.3000
    1.5000
    1.9000
    2.2000
    2.2000
    2.2000
它所做的是用值
1:numel(a)
创建一个列向量,因此
[1;2;3…]
,然后将每个值乘以
0.1
。然后从原始向量中减去该向量

如您所见,这里有一个点,
。在这里,这并不是真的必要,但将其包括在内是一个很好的实践。如果没有点,
将生成a,而不是a。当然,转置将水平向量转换为垂直向量

为了满足需求,谁可以只使用
bsxfun、permute和reforme同时做饭和盖房子呢

如果你想用矩阵来做这件事,你可以使用,或者,或者更棒的,像这样:

A = magic(5);

b = bsxfun(@minus, A, [1:size(A,1)].'*0.1)
b =
   16.9000   23.9000    0.9000    7.9000   14.9000
   22.8000    4.8000    6.8000   13.8000   15.8000
    3.7000    5.7000   12.7000   19.7000   21.7000
    9.6000   11.6000   18.6000   20.6000    2.6000
   10.5000   17.5000   24.5000    1.5000    8.5000

更多维度?组合
bsxfun

bsxfun
,以获得适当的矩阵大小写,尽管没有询问!哈哈,关于晚餐和房子的美好评论,也许有一天会是豪宅;)和
bsxfun
,以获得适当的矩阵大小写,尽管没有询问!哈哈,关于晚餐和房子的美好评论,也许有一天会是豪宅;)