i=1;
while i:length(array)
if (array(i)<=1000)
array(i)=[];
else
i=i+1;
end
end
これはmatlabコードです。どのように私はどのように私はループのためにこれを変換するか教えてください。whileループをMATLABのforループに変換するには?
i=1;
while i:length(array)
if (array(i)<=1000)
array(i)=[];
else
i=i+1;
end
end
これはmatlabコードです。どのように私はどのように私はループのためにこれを変換するか教えてください。whileループをMATLABのforループに変換するには?
実際にはループは必要ありません。あなたは、MATLABのインデックスプロパティを使用して要素「= 1000 <」を削除することができます。
array(array <= 1000)=[]
編集コメントに
を質問に答えるために、インデックスのプロパティで別の配列から
を他の要素を削除します最初の配列でremoreしたいものと同じ位置にある別の配列の要素を削除するには、それらの位置のインデックスを格納してから、2番目のarrの要素にアドレス指定する必要があります
命令:
logical_idx=array <= 1000;
である配列logical_idx
を返しAY:あなたが最初の配列のインデックスを探すときlogical
インデックスまたはdouble
指標として
、あなたはどちらかそれらを評価することができますlogical
タイプは、それが
ある - 条件が検証された場合1
から0
それがない場合
find
関数が条件満たす配列の要素「見つける」ために使用することができる
:double
型で、この場合には、アレイである返さ
double_idx=find(array <= 1000)
を。
logical
インデックスを使用して配列の要素にアクセスする場合、選択された配列は論理配列内の1
に対応するものです。一例として、logical
インデックス配列である場合:
[0 1 1 0 0]
第二第三の要素が選択されます。
double
インデックスを使用すると、インデックスで指定された位置を考慮してアクセスされます。前の例に関しては、インデックス配列のdouble
バージョンは次のようになります。
[2 3]
あなたがの要素にアクセスするためにそれらを使用することができます(上記の二つのアプローチのいずれかを使用して)インデックスを識別した後異なる配列。
array
:あなたは要素を探していたもので<= 1000
array_1
を削除する:削除したいから二番目の配列あなたは3つのアレイを持っていると仮定すると
削除された要素と同じ位置にある要素array
array_11
:と似ています
これは二つのアプローチが使用された例である:あなたが新しい配列を作成する必要がfor
ループを使用する場合は
% Identify the logical indexes of the element to be removed
logical_idx=array <= 1000;
% Identify the integer indexes of the element to be removed
double_idx=find(array <= 1000);
% Remove the unwanted elements by "direct" indexing
array(array <= 1000)=[]
% Remove unwanted elements using logical indexes
array_1(logical_idx)=[]
% Remove unwanted elements using integer indexes
array_11(double_idx)=[]
エンド編集
"新しい" arrrayに保存されなければならない元の配列の要素を特定するために "if"の条件を "逆転"します(あなたがdiscrardしてはいけないもの)。
array_2=[];
cnt=0;
for i=1:length(array)
if(array(i) > 1000)
cnt=cnt+1;
array_2(cnt)=array(i);
end
end
これが役に立ちます。
Qapla」
あなたはループのためにコードを変換するには、次のコードを使用することができます。
for i=1:length(array)
some code here
end
あなたのコードを見ると、おそらくこれを行列操作として書き直したいと思うかもしれません。あなたのコードは1000未満のものを取り除いているようですが、その場合はそれらの値を削除するためにMATLABの配列インデックス機能を使うべきです(下記参照)。
array(array<1000)=[];
解決策は、はるかに速く、理解しやすくなるでしょう。
このお試しください:私はオプション1を使用した場合
for i=1:1:size(array,1)*size(array,2)
if array(i)<=1000
array(i)=0;
end
end
array = nonzeros(array)
il_raffaをその要素<= 1000を削除し、同じインデックスで、それはまた、インデックスのプロパティで別の配列から他の要素を除去することが可能です。このように:i = 1; while i:length(array) if(array(i)<= 1000) array(i)= []; array1(i)= []; else i = i + 1; end end – user3662189
私はあなたに慣れてきました。私は、今日あなたの質問に答えることができます(property_をインデックスに登録することによって他の配列から他の要素を取り除いてください)。 –
ここにいるよ。私はあなたの質問に対処するためにanswserを更新しました(他の配列の他の要素をindex_propertyで削除する_)。 –