0

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

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。

这似乎是一个简单的例子,但我不知道如何矢量化它......

谢谢。

4

2 回答 2

0

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

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

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

res = zeros(81,1);
for ii = 1:numel(res)
    res(ii) = det(A-V(ii)*I);
end
于 2012-10-30T11:27:19.257 回答
0

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

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

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

于 2012-10-30T11:37:51.503 回答