在Matlab中,是否可以在不使用for
循环的情况下在数组的后续元素之间进行简单操作?像diff()
这样的东西。例如,我有这个向量:
A = [2 4 8 16 32]
我希望每个元素都由其前身划分:
ans = [2 2 2 2]
如果不经历所有元素(不使用循环),我怎么能这样做?
答案 0 :(得分:4)
如果您使用./
运算符而非/
>> 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中的大多数函数都是矢量化的,因此它们可以处理标量,向量和矩阵,但有时您可以阅读文档(例如,键入help dot
)以了解如何使用它们。