在 Matlab 中,是否可以在不使用for
循环的情况下在数组的后续元素之间进行简单的操作?类似的东西diff()
。例如,我有这个向量:
A = [2 4 8 16 32]
我希望每个元素都被它的前身划分:
ans = [2 2 2 2]
我如何在不遍历所有元素(不使用循环)的情况下做到这一点?
在 Matlab 中,是否可以在不使用for
循环的情况下在数组的后续元素之间进行简单的操作?类似的东西diff()
。例如,我有这个向量:
A = [2 4 8 16 32]
我希望每个元素都被它的前身划分:
ans = [2 2 2 2]
我如何在不遍历所有元素(不使用循环)的情况下做到这一点?
如果您使用./
运算符而不是/
>> A = [2 4 8 16 32];
>> A(2:end) ./ A(1:end-1)
ans =
2 2 2 2
关于您关于在dot()
矩阵行中存储的向量之间进行操作的问题。还有一个额外的参数dot()
告诉它你的向量是存储在列(默认)还是行中;
>> x = rand(3);
>> y = rand(3); # random vectors
>> dot(x,y) # dot product of column vectors
ans =
0.5504 0.5561 0.5615
>> dot(x,y,2) # dot product of row vectors
ans =
0.3170
1.0938
0.2572
Matlab 中的大多数函数都是矢量化的,因此它们可以处理标量、向量和矩阵,但有时您需要阅读文档(例如 type help dot
)来了解如何使用它们。