私はMatlabの初心者です。次元がjの場合はどこでも、NaNの値を(j、k、l)の配列に代入したいと思います。< kまたはj < l。これを最も効率的に行うにはどうすればいいですか?Matlabの値j <kにNaNを代入する方法
2
A
答えて
4
あなたが効率的にそれを行うにはbsxfun
を使用することができます:あなたは、単に書くことができ
J = (1:size(A,1)).';
K = 1:size(A,2);
L = reshape(1:size(A,3),1,1,[]);
A(bsxfun(@or,bsxfun(@lt,J,K),bsxfun(@lt,J,L))) = NaN;
をMATLAB r2016bでまたはオクターブ:
________________________________
| METHOD | MEMORY | SPEED |
|==========|==========|==========|
| MESHGRID | 1547 MB | 1.24 Secs|
|----------|----------|----------|
| BSXFUN | 57 MB | 0.18 Secs|
|__________|__________|__________|
:マトリックス
A = rand(500,400,300)
のテストの
J = (1:size(A,1)).';
K = 1:size(A,2);
L = reshape(1:size(A,3),1,1,[]);
A(J<K|J<L)=NaN;
結果
3
使用ファンシーvecotization:
% this may be memory expensive for big matrices:
[j,k,l]=meshgrid(1:size(A,1),1:size(A,2),1:size(A,3));
% Tada!
A(j<k | k<l)=NaN;
にあなたが十分なRAMを持っていない(または、このためにそれを使用したくない)場合は、最良のオプションはちょうど愚かである:
for jj=1:size(A,1)
for k=1:size(A,2)
for l=1:size(A,3)
if (jj<k | k<l)
A(jj,k,l)=NaN;
end
end
end
end
これはおそらく遅くなりますが、余分なメモリは必要ありません。
関連する問題
- 1. マップに値を挿入< K, V >
- 2. 代替(I = 0、J = 10; iが<jの、iはj-- ++)パイソン
- 3. Matlab GUIDE uitable NaN値を削除する
- 4. Matlabに "i"の代わりに "j"と表示させる
- 5. 数値から(i、j、k)への後方マッピング
- 6. 言語L = {0i0j0k/i <j <k}を受け入れるTMを構築する
- 7. J/K/APLを学ぶ
- 8. NaNエラーの値をチェックする方法
- 9. C++のDiag(k)の代替方法は何ですか?
- 10. 値の各フィールドに値を代入する方法
- 11. K平均アルゴリズムのシード値を入れる方法は?
- 12. MySQLデータベースにNaN値を挿入する
- 13. Matlabを入手する最良の方法<-> C++インターフェイス
- 14. imaginでMatlabでNaNの色を変える方法は?
- 15. Java - セットをソートする方法<Entry<K,V>>?
- 16. kはMATLAB
- 17. NaN/NaN/NaNを取り除く方法
- 18. ループmatlabで構造体フィールド値を代入する
- 19. 代わりに番号/値のはNaNを取得する
- 20. 2次元配列中の任意の行の値をNANに代入
- 21. matlabの関数引数に新しい値を代入する方法はありますか?
- 22. javascript変数の値をPHP変数に代入する方法
- 23. Rubyで2D配列のクラスオブジェクトに値を代入する方法
- 24. CのStructプロパティに値を代入する方法
- 25. VB2010 lostfocusの変数に値を代入する方法は?
- 26. カーソルイテレータ内のarraylistアイテムに値を代入する方法
- 27. PHPデフォルトの関数引数に値を代入する方法
- 28. 選択値は、次の配列</p>ので、同じように生成される <pre><code>array([ nan, nan, nan, 1., nan, nan, 0., nan, nan]) </code></pre> <p>以降で別の配列
- 29. K-Nearest Neighborsを使用していない値を代入する
- 30. 逆シリアル化で値を代入する代入リストの代入
偉大な答え!!! –
@AnderBiguriありがとう、時々チャンスが役に立ちます:)。 – rahnema1