我是MATLAB的新手,想学习更多关于循环的知识。首先,我有一个名为“A”的数组:
A = 4
6
7
11
12
17
22
25
接下来,我想创建一个减去每一行的数组。因此,它本质上是"6-4“、"7-6”、"11-7“、"12-11”、"17-12“、"22-17”、"25-22“。我希望它显示为:
2
1
3
1
5
5
3
然而,我所拥有的并没有输出任何东西。
我尝试使用"while“循环,但没有收到任何输出,也没有错误消息。到目前为止我所做的如下所示: PS -我以前使用过Python,所以可能我把Python语法和MATLAB搞混了,或者我的逻辑是错的?
B = length(A); %will output the length of A, which is 8
while i <= B
X = A(i, 1); %set X equal to "row i" and column 1
Y = A(i+1, 1); %this i don't know what to do.. I want this to be the row
%directly below i so if i is row 1, then I want this to be
%row 2
bsxfun(@minus, X, Y)
end
我觉得这应该很简单,但我不确定我做错了什么。我感谢所有的反馈!如果我的问题需要进一步澄清,请让我知道!:)
发布于 2019-10-14 16:17:16
MATLAB有一个内置的函数diff
,它可以做你想做的事情:
>> A = [4; 6; 7; 11; 12; 17; 22; 25];
>> diff(A)
ans =
2
1
4
1
5
5
3
您也可以使用数组切片获得相同的结果:
>> A(2:end) - A(1:end-1)
https://stackoverflow.com/questions/58355631
复制相似问题