使用顶点与自定义行连接复杂数据的快速方法



我需要连接几个更大的矩阵,但要以特定的方式 - 例如,仅连接 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 以快速可靠的方式做这样的事情吗?

感谢您的任何建议!唰唰��

在这种情况下似乎

很难避免循环。您可以将结构的字段转换为单元格,然后使用 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).');

最新更新