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 に答える