したがって、それが単なる 1D ベクトルである場合は、次のように簡単に実行できます。
y1 = y(~イスナン(y));
しかし... y が mxn 行列で、y(:,5) からのすべての非 NaN データが必要な場合はどうなりますか? 次に、余分な手順をできるだけ少なくするために何ができますか?
y1 = y(:,5) を割り当ててから、y1 = y(~isnan(y)) を呼び出すことができます。しかし、可能であれば、あまりにも多くの新しい変数を割り当てることは避けたいと思います。
したがって、それが単なる 1D ベクトルである場合は、次のように簡単に実行できます。
y1 = y(~イスナン(y));
しかし... y が mxn 行列で、y(:,5) からのすべての非 NaN データが必要な場合はどうなりますか? 次に、余分な手順をできるだけ少なくするために何ができますか?
y1 = y(:,5) を割り当ててから、y1 = y(~isnan(y)) を呼び出すことができます。しかし、可能であれば、あまりにも多くの新しい変数を割り当てることは避けたいと思います。
しかし... y が mxn 行列で、y(:,5) からのすべての非 NaN データが必要な場合はどうなりますか? 次に、余分な手順をできるだけ少なくするために何ができますか?
を使用することもできますsub2ind
が、中間変数なしで使用すると、非常に見苦しくなります。私の提案は、あなたが望むことをする関数を書くことです。
y の非 Nan 要素の座標が必要な場合は、次を使用できます。
[row col]=ind2sub(size(y),find(~isnan(y)));
新しい変数を使用せずに、5 番目の列のデータを 5 番目の列の非 nan 値でフィルタリングするだけです。重複、私は知っています。
y(~isnan(y(:,5)),5)
形を変えないことについて。nx1 行列として初期化され、インデックスが割り当てられている場合、形状を保持する必要があると思います。
y_nonnan(:,1) = y(~isnan(y(:,5)),5)
nx1 行列を作成するエレガントな方法を思い出せません。