2017-01-31 11 views
0

私は1000の値の配列上の番号を見つけることを試みています。これは私のコードです:空を見つけるmatlab

size = linspace(420, 2200, 100000); 
size1000 = find(size==1000); 

これは、サイズ1000の空変数を返します。私が実際には420で1000を変更した場合、実際には1を返します。なぜこれは機能しないのですか?

答えて

1

findの結果は、1000が配列に含まれていないために存在しないため、空です。 linspaceへの入力を使用して、あなたの期待ステップサイズは、このステップサイズと420の開始値で0.0178

(2200 - 420)/100000 
% 0.0178 

になるだろう、あなたは正確に値1000をヒットするつもりはありませんしています。配列の最も近い値は1000.001999.983です。 の値を特定する場合は、〜1000の値を指定します。サイドノートとして

inds = find(abs(size - 1000) < 0.01); 

それはMATLABの機能を内蔵し、変数名としてそれを使用すると、予期しない動作が発生することができますの名前であることから、変数の名前としてsizeは使用しないでください。何のために

+0

私はあなたのコードの両方の行を試しても値を取得していません。 – carlosremove

+0

@carlosremoveアップデートをご覧ください – Suever

0
あなたは、単に1000年の下にすべての値を削除するために論理的なインデックスを使用することができ、その後、あなたが残っているものの第一成分があなたの答えになることを知っている

....

a = size(size>1000); 
a(1) 

それ変数名にsizeを使用しないでください。 sizeは、行列のサイズを取得するための重要なMATLAB関数です。あなたのコードで行うようにあなたは、sizeという名前の変数を宣言するとき例えば、

>> size(randn(2,3)) 

ans = 

    2  3 

はしかし、あなたはこの機能を非表示になります。あなたがsize(randn(2,3))を呼ばれるのであれば、今、後のコードでいくつかの点で、あなたは不可解なエラーになります

Subscript indices must either be real positive integers or 
logicals. 

これらは、ので、それを避けてください、追跡することが非常に難しいです。

関連する問題