2017-02-18 5 views
0

Octaveで辞書(またはマップまたはハッシュテーブル)を作成してアクセスするにはどうすればよいですか? 私はいくつかの方法を試しましたが、おそらくもっと効率的な方法があります。私が試したことを示すコードは以下の通りです。これは、ここで提供.MATファイルからの入力を使用しています。 https://www.dropbox.com/s/4v1z1q04ivpgjvf/sample_input_dictionary.mat?dl=0Octaveで辞書(またはマップまたはハッシュテーブル)を作成およびアクセスする方法

% Methods to build/use a dictionary on Octave 

clear 

tic 

load sample_input_dictionary.mat; 
pkg load general 

toc 

% Dict-based dictionary, using the "general" package: very slow to access 
d_dict = dict(nodes, num2cell(1:numel(nodes))); 

toc 

% Struct-based dictionary: slower to build, much faster to access 
temp = [nodes', num2cell([1:numel(nodes)]')] .'; 
d_struct = struct(temp{:}); clear temp; 

toc 

% Is there an equivalent and more efficient cell-based dictionary? 

% A different struct-based dictionary, which I could not build vectorially 
t = struct(); 
for m=1:numel(nodes) 
    t.(nodes{m}) = edges{m}; 
end 

toc 

% Example of accessing the above dictionaries 
d_dict('1234') % this takes forever 
d_struct.('1234') 
t.('1234') 
+0

いくつかのコードを示してください、何あなたがこれまでに試した、MCVE https://stackoverflow.com/を作成help/mcve – Andy

+0

ありがとうございます。私はコードを追加しました。 – highalpha

答えて

0

あなたは同じもののため構造またはセル配列を試すことができます。

私の好みは細胞アレイです。しかし、あなたは彼らが何をしているかを理解して理解し、適切に決定します。

ドキュメントをご覧になるとよいでしょう。

私は役に立つかもしれないいくつかのリンクを提供しています。

データコンテナ:link to Octave Documentation

構造:link to Octave Documentation

セル配列:link to Octave Documentation

+0

多くのありがとう。私は辞書を構造体として使う方法を考えましたが、この使用法を完全には習得していません。特に、辞書の膨大化をベクトル化する方法はあります。セルについては、私が編集した質問に示した例を使って、もっと効率的な辞書を使って辞書を作成する方法を教えてください。 – highalpha

関連する問題