【发布时间】:2013-07-15 15:43:31
【问题描述】:
在 Matlab 中,是否可以在不使用 for 循环的情况下在数组的后续元素之间进行简单的操作?类似于diff()。例如,我有这个向量:
A = [2 4 8 16 32]
我希望每个元素都被它的前任分割:
ans = [2 2 2 2]
如何在不遍历所有元素(不使用循环)的情况下做到这一点?
【问题讨论】:
标签: matlab
在 Matlab 中,是否可以在不使用 for 循环的情况下在数组的后续元素之间进行简单的操作?类似于diff()。例如,我有这个向量:
A = [2 4 8 16 32]
我希望每个元素都被它的前任分割:
ans = [2 2 2 2]
如何在不遍历所有元素(不使用循环)的情况下做到这一点?
【问题讨论】:
标签: matlab
如果您使用./ 运算符而不是/,则可以使用Matlab 中的除法对标量和矩阵都起作用的事实
>> 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)来了解如何使用它们。
【讨论】: