0

MatLabで作成された10X10の行列Aがあります。マトリックス内のすべての値は0から100の間です。次のように言います。

  1. A<10のすべての要素をゼロに置き換えます
  2. A>90のすべての要素を無限大に置き換えます
  3. 30から50までのすべての値を新しいベクトルに抽出します。

スクリプトを書かずにこれを行うことはできますか?いくつかの単純なforループを使用してスクリプトを使用してこれを簡単に行うことができますが、利用可能なショートカットはありますか?どんな助けでも大歓迎です!

4

2 に答える 2

4

これらはすべて、論理インデックスを使用して非常に簡単に実行できます。

上記の各操作は、1つまたは2つのコマンドを使用して非常に簡単に実行できます。ただし、各操作は他の2つとは独立して実行する必要があります。3つすべてを1行で実行することはできません。

1.1。

smallIdx = A<10;
A(smallIdx) = 0;
% One Line Version
A(A<10) = 0; 

2.2。

bigIdx = A>90;
A(bigIdx)=inf;
% One Line Version
A(A>90) = inf;

3.3。

middleIdx = A>30 & A<50;
newVector = A(middleIdx); 
% One Line Version
newVector = A(A>30 & A<50);

新しいベクトルはベクトルであり、Aのように正方形にはなりません

于 2012-04-24T18:57:30.900 に答える
0

任意の3×3マトリックスを設定します。次の操作を実行するためのコマンドラインステートメントをいくつか記述します。(a)列2と3を交換します。(b)(0の)4番目の列を追加します。(c)1の行をaの新しい2番目の行として挿入します(つまり、現在の2番目と3番目の行を下に移動します)。(d)2番目の列を削除します。

于 2015-11-11T04:23:49.587 に答える