例如>>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