2017-06-05 7 views
0

5つのフィールド( 'a'、 'b'、 'c'、 'd'、 'e')を持つ1x1 Matlab構造体があります。各フィールドには何らかのデータが含まれています(私の質問ではそれほど重要ではありません)。構造体から各値を抽出し、それをフィールドとして変数に代入したいと思います。それを行うコードのための任意のアイデア? sを想定し構造体の値をフィールドとして名前を付けた変数に抽出します

+1

単純なことですが、 'a = yourStruct.a'です。他の分野でも同様です。 – kostek

+2

任意の数の任意のフィールドにこれを一般化したいですか?おそらく、変数に束縛されているよりも組織化されているように、値を構造体に保存するほうがよいでしょう。 – gnovice

+1

私は自動的にそれをしたいです – pyigal

答えて

3

cellfun(@(x) assignin('base', x, s.(x)), fieldnames(s)); 

あなた構造ですでにgnoviceで述べたようにしかし、私はこのために良いユースケースは表示されません。

1

あなたが作成する変数が何を知っているならば、あなたは(sがあなたの構造体であると仮定した場合)書くことができます。

C = struct2cell(s); 
[a,b,c,d,e] = C{:}; 

プログラムを使用して(実行されている間そうしないと、あなたが宣言されていない新しい変数を作成する必要がありますassigninコマンド:@Vahe-Tshitoyan answer)、それは悪い考えです。

3

一般にではなくですが、構造体にきちんと格納されているときにデータを複数の変数に分散するベストプラクティス、ハードコードを必要としない変数に構造体フィールドを移動する簡単な方法

s = struct('a', 1, 'b', 2, 'c', 3); % A sample structure 
save('temp.mat', '-struct', 's'); % Save fields to a .mat file 
clear all       % Clear local variables (just for display purposes) 
load('temp.mat');     % Load the variables from the file 
whos         % Display local variables 

    Name  Size   Bytes Class  Attributes 

    a   1x1     8 double    
    b   1x1     8 double    
    c   1x1     8 double 

プロ:あなたのフィールド/変数名はそうのようなsaveloadコマンドを使用することです、これは非常に簡単であり、任意の構造のために動作します。 Con:データをファイルの内外に移動すること。

関連する問題