例如>>w = whos;
的輸出返回一個結構數組。我想構建一個數組,其元素是每個結構中特定字段名稱的標量。MATLAB:從結構數組中收集
這樣做的最明顯的方式是不會按照我的意願返回數組,但每個答案都是分開的。
>> w(1:2).bytes
ans =
64
ans =
128
我可以做一個循環,但想知道是否有更好的方法。
例如>>w = whos;
的輸出返回一個結構數組。我想構建一個數組,其元素是每個結構中特定字段名稱的標量。MATLAB:從結構數組中收集
這樣做的最明顯的方式是不會按照我的意願返回數組,但每個答案都是分開的。
>> w(1:2).bytes
ans =
64
ans =
128
我可以做一個循環,但想知道是否有更好的方法。
將方括號的表達,即
[w(1:2).bytes]
訪問結構數組的字段將作爲輸出返回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 2009-07-14 13:20:14