我不知道在没有迭代矩阵的情况下这是否可行,但这里提出了问题。对于任何给定的方阵表示“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相同维度的新方阵。希望问题清楚。
提前致谢
答案 0 :(得分:2)
听起来你想要这个纯矩阵解决方案,所以我会这样回答。 (你在标题中使用了cell这个词,它在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
答案 1 :(得分:1)
我认为你只想做像
这样的事情NM(M < key) = formula1;
NM(M == key) = formula2;
NM(M > key) = formula3;
根据您的公式,您可能需要将M的值传递给函数,即
NM(M < key) = formula1(M(M < key));