MATLAB:矢量化索引与矢量*矩阵混淆

时间:2012-10-30 11:10:53

标签: matlab indexing vectorization

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

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。

这似乎是一个简单的例子,但我无法弄清楚如何对其进行矢量化......

感谢。

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

您可以使用执行逐个元素的操作。与选择的运营商一起。例如:

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

依旧......这就是你的意思吗?