【问题标题】:MATLAB: vectorized indexing confused with vector*matrixMATLAB:向量化索引与向量*矩阵混淆
【发布时间】:2012-10-30 11:10:52
【问题描述】:

我有一个计算,我想逐个元素地执行。

foreach i from i=1 to i=N
    RES_i = det(A - V_i * I) // notice V_i and RES_i are SCALARS

例如,A 是 3x3,I 是 3x3,V 和 RES 是 1xN。

所以基本上我做的是

idx=1:81
res(idx) = det( A - V(idx)*I );

但是,这会被解释为取整个 V 并乘以 I。

这似乎是一个简单的示例,但我不知道如何对其进行矢量化...

谢谢。

【问题讨论】:

    标签: matlab indexing vectorization


    【解决方案1】:

    首先,这不是 Matlab 代码...

    第二:我认为您将“矢量化”与隐式循环混淆了。向量化意味着使用向量/矩阵/张量表示法和操作一次将操作应用于整个数组。然而,你想要的是一个隐式的 for-each 类型循环,Matlab 抱怨它是完全有道理的。

    除了明确写出来别无他法:

    res = zeros(81,1);
    for ii = 1:numel(res)
        res(ii) = det(A-V(ii)*I);
    end
    

    【讨论】:

      【解决方案2】:

      您可以使用 .与选择的运营商一起。例如:

      Element-by-element multiplication: .* 
      Element-by-element division: ./
      

      等等……你是这个意思吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-05
        • 2021-12-04
        • 2015-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多