eg の出力は>>w = whos;
構造体の配列を返します。各構造体の特定のフィールド名からのスカラーを要素とする配列を作成したいと思います。
これを行う最も明白な方法は、私が望むように配列を返しませんが、それぞれが個別に答えます。
>> w(1:2).bytes
ans =
64
ans =
128
私はループでそれを行うことができましたが、もっと良い方法があるかどうか疑問に思っていました.
eg の出力は>>w = whos;
構造体の配列を返します。各構造体の特定のフィールド名からのスカラーを要素とする配列を作成したいと思います。
これを行う最も明白な方法は、私が望むように配列を返しませんが、それぞれが個別に答えます。
>> w(1:2).bytes
ans =
64
ans =
128
私はループでそれを行うことができましたが、もっと良い方法があるかどうか疑問に思っていました.
構造体の配列のフィールドにアクセスすると、コンマ区切りリスト(または 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
このような状況では、 catを使用する方がより一般的です。一連の文字列で同じことをしたいとすると、 [ ] メソッドは機能せず、次のようにする必要があります。
cat(1,w(1:2).class)
そして上記の場合、
cat(1,w(1:2).bytes)
さらに、パフォーマンスを向上させるために、MATLAB で列として保持する必要があります。