0

次のような .txt ファイルがあります。

structure
a = title
c1 = A.B.C
endstructure

これを matlab に読み込んで、ワークスペースに ABC という名前の構造体が既に存在するかどうかを確認したい場合は、この構造体から変数 c1 にデータを保存します。行 c1 = ABC を適切に解析し、それをワークスペースと比較することに問題があります。助けていただければ幸いです。

              • 説明 - - - - - - 私のワークスペースには ABC = [0 1 2 3 5 8] という構造があり、私の txt ファイルには c1 = ABC と書いてあり、それが名前です。プログラムで、この名前がワークスペース内のこの名前の既存のデータと一致するかどうかを確認したい。その場合は、このデータを変数 c1 に割り当て、c1 をワークスペースに残します。

4

2 に答える 2

2

変数がMatlabワークスペースにすでに存在するかどうかを判断するには、matlabexist関数を使用できます。変数「A」が存在するかどうかを確認することしかできないため、状況によっては少し厄介になります。次に、それをさらにネストして、変数に指定されたフィールドがあるかどうかを確認できます。次のようになります。

if( exist('A','var') && isfield(A,'B') && isfield(A.B,'C') )
     %do something
end
于 2012-08-15T15:31:24.603 に答える
0

'=' 記号の右側に式evalinwith 構文を使用できます。evalin('base',expression,catch_expr)あまり効率的ではありませんが、構造名を解析する必要がなくなります。ではcatch_expr、割り当てを行わないように指示するフラグを設定できます。

assigninその後、「c1」に値を割り当てるために使用します。'c1' はヒ​​ア文字列なので、異なる名前のループに入れるのは簡単です。

于 2012-08-15T15:42:06.387 に答える