6

Web サービスから結果を取得しましたが、MatLab はそれが1x1 structであることを喜んで通知します。ただし、表示しようとすると ( receivedDataと入力して を押すとenter)、次のように表示されます。

ResponseData: [5x1 struct]

同様に喜んで、データを表示するために次のように入力しました。

struct2array(responseData)

提供されたデータの列の名前ヘッダーである可能性のある一連の文字列 (5 つではなく、5 つ以上) しか取得しません。

そのような構造からすべてのデータを取得するにはどうすればよいですか?

4

5 に答える 5

3

を使用fieldnamesして構造体からデータを取得し、関数を使用してデータを繰り返し表示できgetfieldます。例えば:

structvariable = struct('a',123,'b',456,'c',789);
dataout = zeros(1,length(structvariable)) % Preallocating data for structure
field = fieldnames(a);

for i = 1:length(structvariable)
    getfield(structvariable,field{i})
end

matrixではなくcellgetfieldの形式でデータを与えることを忘れないでください。

于 2013-02-16T21:05:08.500 に答える
0

便利なアクセス構文:

someVar = ResponseData(1)  %Displays the first element
someVar = ResponseData(4)  %Displays the 4th element

それらをすべて表示するには、次から次へ

for ix = 1:length(ResponseData)
    tmp = ResponseData(ix);
end

すべてのフィールド名を取得するには

names = fieldnames(ResponseData)

最初のフィールド名を持つ構造体から 5 つのデータ要素すべてを取得し、それらを cell 配列に入れるには

ixFieldName = 1;
someCellArray = {  ResponseData.(ixFieldName{1})  }
于 2013-02-17T07:36:36.033 に答える
0

Sahinsuの答えに対する小さな修正:

structvariable = struct('a',123,'b',456,'c',789);
dataout = zeros(1,length(structvariable)) % Preallocating data for structure
field = fieldnames(structvariable);

for i = 1:length(field)
    getfield(structvariable,field{i})
end
于 2014-07-02T12:47:39.383 に答える