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

MATLAB中如何将多个不同数组/矩阵拼接为一个大矩阵?

在MATLAB中拼接不同矩阵的实现方法

当然可以实现啦!在MATLAB里拼接不同类型的矩阵是非常常见的操作,完全可以把你提到的城市到达/出发时间矩阵、电动汽车续航里程、电池状态矩阵这些整合到一起,下面我给你详细讲讲具体方法和注意事项:

一、核心拼接方式

MATLAB提供了两种最常用的拼接逻辑,分别对应垂直堆叠和水平拼接,你可以根据自己的业务需求选择:

1. 垂直堆叠(上下叠放)

适合把结构类似的矩阵按行方向合并,要求所有参与拼接的矩阵列数完全相同。比如你的城市到达时间矩阵和出发时间矩阵,如果都是m×n的维度(m个城市,n个时间点),就可以直接上下叠放:

% 示例:假设arr_time是5×3的到达时间矩阵,dep_time是5×3的出发时间矩阵
combined_vertical = [arr_time; dep_time];
% 也可以用专门的垂直拼接函数
combined_vertical = vertcat(arr_time, dep_time);

拼接后会得到一个2m×n的大矩阵,前m行是到达时间,后m行是出发时间。

2. 水平拼接(左右并排)

适合把不同属性的矩阵按列方向合并,要求所有参与拼接的矩阵行数完全相同。比如你有每个车辆的续航里程(k×1)、电池状态(k×2),以及对应车辆的城市时间矩阵(k×n),就可以把这些属性并排拼接:

% 示例:假设range是5×1的续航矩阵,battery_state是5×2的电池状态矩阵,arr_time是5×3的到达时间矩阵
combined_horizontal = [arr_time, dep_time, range, battery_state];
% 也可以用专门的水平拼接函数
combined_horizontal = horzcat(arr_time, dep_time, range, battery_state);

拼接后会得到一个k×(n+n+1+2)的大矩阵,每一行对应一辆车的所有属性数据。

二、维度不匹配的解决办法

如果你的矩阵维度不满足拼接要求(比如一个是5×3,另一个是5×2),可以根据业务逻辑调整维度后再拼接:

  • 补全缺失的列/行:比如给列数少的矩阵补0或者重复值,对齐列数后再垂直堆叠:
% 示例:A是5×2的矩阵,B是5×3的矩阵,给A补一列0对齐维度
A_padded = [A, zeros(5,1)];
combined = [A_padded; B];
  • 统一数据类型:如果矩阵的数据类型不同(比如一个是整数,一个是浮点数),MATLAB会自动转换为精度更高的类型;如果需要强制统一类型,可以用cast()函数:
% 把整数矩阵A转换为浮点数类型,和B统一
A_cast = cast(A, 'double');
combined = [A_cast, B];

三、针对你的场景的建议

结合你提到的几个矩阵:

  • 如果是按「城市-时间」维度整合,可以把到达时间、出发时间垂直堆叠,再把续航、电池状态(如果是对应每个城市的参数)水平拼接在后面;
  • 如果是按「车辆」维度整合,可以把每辆车的到达时间片段、出发时间片段、续航、电池状态拼接成一行,再把所有车辆的行垂直堆叠成大矩阵。

只要先理清数据的对应关系,调整好矩阵维度,就能轻松完成拼接啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:13:19