不使用FOR循环在后续元素之间进行操作?

时间:2013-07-15 15:43:31

标签: matlab

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

A = [2 4 8 16 32]

我希望每个元素都由其前身划分:

ans = [2 2 2 2]

如果不经历所有元素(不使用循环),我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

如果您使用./运算符而非/

,您可以使用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)以了解如何使用它们。