2

eg の出力は>>w = whos;構造体の配列を返します。各構造体の特定のフィールド名からのスカラーを要素とする配列を作成したいと思います。

これを行う最も明白な方法は、私が望むように配列を返しませんが、それぞれが個別に答えます。

>> w(1:2).bytes
ans =
    64
ans =
   128

私はループでそれを行うことができましたが、もっと良い方法があるかどうか疑問に思っていました.

4

3 に答える 3

6

構造体の配列のフィールドにアクセスすると、コンマ区切りリスト(または 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
于 2009-07-14T14:39:39.903 に答える
2

このような状況では、 catを使用する方がより一般的です。一連の文字列で同じことをしたいとすると、 [ ] メソッドは機能せず、次のようにする必要があります。

cat(1,w(1:2).class)

そして上記の場合、

cat(1,w(1:2).bytes)

さらに、パフォーマンスを向上させるために、MATLAB で列として保持する必要があります。

于 2009-07-14T14:20:03.583 に答える