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

Matlab中for循环合并数组问题:将多个2x1数组合并为20x1数组

解决Matlab中合并2x1数组成20x1数组的问题

原代码的问题在于:你把每个2x1的w赋值给了W的第i行(W(i,:) = w;),最终得到的是10行2列的矩阵,和你需要的20行1列数组不符。要实现所有小数组的垂直堆叠,可按以下两种方式修改:

方法1:动态垂直拼接

直接在循环里把每个w垂直追加到W末尾,修改循环内的赋值语句即可:

clc
clear all
u_x = 10;
u_y = 20;
u = [u_x; u_y];

W = [];
for i=1:10
    w = u.*i + rand(2,1);
    W = [W; w];  % 垂直拼接,每次把w加到W底部
end
W

方法2:预分配内存(更高效)

Matlab中动态扩容会降低运行效率,尤其是数据量较大时。可以先预分配20x1的数组空间,再把每个w放到对应位置:

clc
clear all
u_x = 10;
u_y = 20;
u = [u_x; u_y];

W = zeros(20,1);  % 预分配20行1列的数组
for i=1:10
    w = u.*i + rand(2,1);
    W(2*i-1:2*i) = w;  % 把w放到第2i-1到2i行的位置
end
W

两种方法最终都会得到20x1的数组,其中方法2在循环次数较多时性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:09:23