我需要连接几个更大的矩阵,但是以特定的方式 - 例如,从X矩阵只连接1行。将数据存储在结构中有一个很好的解决方案,因此不需要准备需要连接的长列表。
例如,我们将有一个这样的结构:
struct(1).huge = [1 2 3 4; 1 2 3 4];
struct(2).huge = [1 2 3 4; 1 2 3 4];
struct(3).huge = [1 2 3 4; 1 2 3 4];
然后我们可以将这些连接起来:
concatVar.concat = vertcat(struct.huge);
而不是,例如:
concatVar.concat = vertcat(struct(1), struct(2),(...),struct(100));
但是如果我只需要连接结构中不同字段的特定行,例如只有1行,该怎么办:
concatVar.concat = vertcat(struct.huge(1,:));
然后这个方法不起作用,错误:
“期望从大括号或点索引表达式输出一个,但有X个结果”。
甚至可以使用vertcat或horzcat以快速可靠的方式做类似的事情吗?
谢谢你的建议! BM
在这种情况下似乎很难避免循环。您可以将struct的字段转换为单元格,然后使用cellfun
,它本质上是一个循环。
让您的结构定义如下。请注意,建议不要使用函数名或struct
等保留字作为变量名。
s(1).huge = [1 2 3 4; 1 2 3 4];
s(2).huge = [1 2 3 4; 1 2 3 4];
s(3).huge = [1 2 3 4; 1 2 3 4];
然后:
result = cell2mat(cellfun(@(x) x(1,:), {s.huge}, 'uniformoutput', false).');