[解決済み] matlabでhashtables/hashmapsを使う方法はありますか?重複
2022-02-12 17:24:56
質問
重複の可能性があります。
MATLABのハッシュテーブル
一般的な質問
Matlabでハッシュセットやハッシュマップの構造を取得する方法はありますか?
私はよく、ユニークなエントリを見つけたり、ベクトルのメンバーシップをチェックする必要がある状況で、以下のようなコマンドを使用することに気づきました。
unique()
または論理的な索引付けは、ベクトルを通して検索するようで、大きな値のセットでは本当に遅いです。Matlabでこれを行う最良の方法は何でしょうか?
例
例えば、素数のリストがあり、3が素数かどうか調べたいとします。
primes = [2,3,5,7,11,13];
if primes(primes==3)
disp('yes!')
else
disp('no!')
end
長いベクトルで何度もやると、本当に遅くなるんです。
他の言語では
つまり、基本的に、パイソンの
set()
と
dict()
あるいは、同様にJavaの
java.util.HashSet
と
java.util.HashMap
は、Matlabでは?また、そうでない場合、大きなベクトルでのルックアップを行う良い方法はありますか?
編集:回答への反映
これは、回答で提案されたことについて私が得た実行時間です。
>> b = 1:1000000;
>> tic; for i=1:100000, any(b==i);; end; toc
Elapsed time is 125.925922 seconds.
s = java.util.HashSet();
>> for i=1:1000000, s.add(i); end
>> tic; for i=1:100000, s.contains(i); end; toc
Elapsed time is 25.618276 seconds.
>> m = containers.Map(1:1000000,ones(1,1000000));
>> tic; for i=1:100000, m(i); end; toc
Elapsed time is 2.715635 seconds
javaセットの構築もかなり遅かったので、問題によってはこれもかなり遅くなるかもしれません。containers.Mapのヒントが本当にうれしいです。他の例を見事に打ち破ってくれましたし、セットアップもあっという間でした。
どのように解決するのか?
こんな感じ?
>> m = java.util.HashMap;
>> m.put(1,'hello,world');
>> m.get(1)
ans =
hello, world
また、Matlabネイティブな実装が必要な場合は、次のようにしてください。
>> m = containers.Map;
>> m('one') = 1;
>> m('one')
ans =
1
これは実際にタイプされたものである。
char
. キーと値の型は、マップを作成するときに指定することができます。
>> m = containers.Map('KeyType','int32','ValueType','double');
>> m(1) = 3.14;
>> m(1)
ans =
3.14
この状態で
int32
および
double
.
また、Setsも用意されていますね。
>> s = java.util.HashSet;
>> s.put(1);
>> s.contains(1)
ans =
1
>> s.contains(2)
ans =
0
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Matlab: 黒を使わないグレースケールでのimagescの使用
-
[解決済み] MATLABでctrl+Aを使わずにすべてのコードを自動インデントする
-
[解決済み] MATLABで軸の制限をグローバルに設定し、プロットされたデータの最小値と最大値にする方法は?
-
[解決済み] エラー --> 整数には同じクラスの整数か、スカラー倍数しか組み合わせることができません。
-
[解決済み] 演算子のオペランドは、論理スカラー値に変換可能でなければならない。
-
[解決済み] MATLABでマシンイプシロンを計算する方法は?
-
[解決済み] 匿名関数の微分
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] matlabでchi2gof関数を理解する
-
[解決済み] MatlabでY軸のプロット範囲を調整する方法は?