3

我不知道如果不迭代矩阵这是否可能,但问题来了。对于任何给定的方阵,说“M”,特定值说“键”。

我想计算一个新矩阵(比如'NM'),这样,

if M(i,j) < key; compute NM(i,j) using formula 1,
if M(i,j) = key; compute NM(i,j) using formula 2, and
if M(i,j) > key; compute NM(i,j) using formula 3

该操作的输出必须是与M相同维度的新方阵。希望问题清楚。

提前致谢

4

2 回答 2

2

听起来你想要一个纯矩阵解决方案,所以我会这样回答。(您在标题中使用了在 Matlab 中具有特定含义的单词单元格)

首先,您需要将矩阵 NM 定义为与 M 相同的大小,只需使用一个来定义另一个就足够简单了。然后使用逻辑索引仅将值应用于所需的矩阵元素。

NM=M;
NM( M < key) = formula1( NM(M < key) );
NM( M == key) = formula2( NM(M == key) );
NM( M >= key) = formula3( NM(M > key) );

这是一个说明性示例,它将单个公式应用于NM=M+1小于 0.5 的矩阵元素。

>> M=rand(3)

M =

0.0623    0.7783    0.0097
0.7011    0.2843    0.7337
0.1984    0.2123    0.9778

>> NM=M;
>> NM(M<.5)=M(M<.5)+1

NM =

1.0623    0.7783    1.0097
0.7011    1.2843    0.7337
1.1984    1.2123    0.9778
于 2012-09-07T18:35:30.443 回答
1

我想你只是想做一些类似的事情

NM(M < key) = formula1;
NM(M == key) = formula2;
NM(M > key) = formula3;

根据您的公式,您可能需要将 M 的值传递给函数,即

NM(M < key) = formula1(M(M < key));
于 2012-09-07T18:37:03.310 回答