1

在 Matlab 中,是否可以在不使用for循环的情况下在数组的后续元素之间进行简单的操作?类似的东西diff()。例如,我有这个向量:

A = [2 4 8 16 32]

我希望每个元素都被它的前身划分:

ans = [2 2 2 2]

我如何在不遍历所有元素(不使用循环)的情况下做到这一点?

4

1 回答 1

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 中的大多数函数都是矢量化的,因此它们可以处理标量、向量和矩阵,但有时您需要阅读文档(例如 type help dot)来了解如何使用它们。

于 2013-07-15T15:44:44.563 回答