You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将for循环生成的40个3×7矩阵合并为120×7矩阵?

合并40个3×7矩阵为120×7矩阵的解决方案

嗨,我来帮你搞定这个矩阵合并的问题~你当前的循环代码里,每次生成的3×7矩阵A都会被下一次循环覆盖,根本没保存所有的矩阵,所以自然没法合并。这里有两种实用的方法来实现你的需求:

方法1:预分配内存(推荐,效率更高)

因为我们明确知道最终矩阵是120行(40×3)、7列,所以提前给结果矩阵分配好内存,再把每个循环生成的A放到对应的位置,这种方式在数据量较大时运行速度会快很多。

n = 40;
% 预分配120×7的空矩阵,用zeros初始化是MATLAB里高效的预分配方式
combined_matrix = zeros(n*3, 7); 

for i = 1:n
    A = [ 1, 0, 0, ITRF(i,1), 0, ITRF(i,3), -ITRF(i,2);
          0, 1, 0, ITRF(i,2), -ITRF(i,3), 0, ITRF(i,1);
          0, 0, 1, ITRF(i,3), ITRF(i,2), -ITRF(i,1), 0 ];
    % 计算当前A要插入的行区间
    row_start = (i-1)*3 + 1;
    row_end = i*3;
    combined_matrix(row_start:row_end, :) = A;
end

方法2:动态垂直拼接(简单直观,小数据场景适用)

如果你的数据量不大(比如这里的40个矩阵),直接每次把生成的A追加到结果矩阵底部就行,写法更简单,不用计算行位置。

n = 40;
combined_matrix = []; % 初始化空矩阵

for i = 1:n
    A = [ 1, 0, 0, ITRF(i,1), 0, ITRF(i,3), -ITRF(i,2);
          0, 1, 0, ITRF(i,2), -ITRF(i,3), 0, ITRF(i,1);
          0, 0, 1, ITRF(i,3), ITRF(i,2), -ITRF(i,1), 0 ];
    % 用分号实现垂直拼接,把A加到combined_matrix的底部
    combined_matrix = [combined_matrix; A];
    % 也可以用vertcat函数:combined_matrix = vertcat(combined_matrix, A);
end

两种方法最终得到的combined_matrix就是你需要的120×7的矩阵啦。

内容的提问来源于stack exchange,提问作者Uladzislau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:31:06