たとえば、>>w = whos;
の出力は構造体の配列を返します。私は各構造体の特定のフィールド名からのスカラーを要素とする配列を作成したいと考えています。MATLAB:構造体の配列から収集
これを行う最も明白な方法は、私が望むように配列を返しませんが、それぞれ別々に答えます。
>> w(1:2).bytes
ans =
64
ans =
128
私はループで行うことができましたが、より良い方法があるかどうか疑問に思っていました。式周り
たとえば、>>w = whos;
の出力は構造体の配列を返します。私は各構造体の特定のフィールド名からのスカラーを要素とする配列を作成したいと考えています。MATLAB:構造体の配列から収集
これを行う最も明白な方法は、私が望むように配列を返しませんが、それぞれ別々に答えます。
>> w(1:2).bytes
ans =
64
ans =
128
私はループで行うことができましたが、より良い方法があるかどうか疑問に思っていました。式周り
入れ角括弧、catを使用してこのような状況では、すなわち
構造体の配列のフィールドにアクセスすると、出力としてcomma-separated list(またはCSL)が返されます。言い換えれば、あなたの例の出力は:
w(1:2).bytes
タイピングと同等です:
64, 128
はそのように、あなたはCSLを使用することができる任意の場所に出力を使用することができます。いくつか例があります:
a = [w(1:2).bytes]; % Horizontal concatenation = [64, 128]
a = horzcat(w(1:2).bytes); % The same as the above
a = vertcat(w(1:2).bytes); % Vertical concatenation = [64; 128]
a = {w(1:2).bytes}; % Collects values in a cell array = {64, 128}
a = zeros(w(1:2).bytes); % Creates a 64-by-128 matrix of zeroes
b = strcat(w.name); % Horizontal concatenation of strings
b = strvcat(w.name); % Vertical concatenation of strings
美しい、ありがとう! – second