MATLAB 使用小知识之——拼接数组

本文通过示例介绍如何使用cat函数沿指定维度对两个相同大小的4D数组进行拼接,并展示拼接后的数组尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法:cat(dim,A1,A2,A3,...) 沿着dim对A1,A2,...进行拼接

# 建立两个size为(4,4,3,10)的4D数组a和b:
>> a = rand(4,4,3,10);
>> b = rand(4,4,3,10);

>> c = cat(4,a,b);

>> size(c)

ans =

     4     4     3    20

 

### Matlab拼接不同长度的一维数组MATLAB 中处理不同长度的一维数组并将其拼接在一起可以通过多种方法实现。以下是几种常见的方式: #### 使用 `cell` 数组存储不等长数据再转换为矩阵 由于一维数组长度不同,在直接拼接之前可以先将这些向量存入 cell 数组中,之后根据最长的那个填充其余较短者以形成统一大小的二维矩阵。 ```matlab % 创建两个不同长度的一维数组 array1 = [1, 2, 3]; array2 = [4, 5]; % 将它们放入单元格数组(cell array)内 arraysCell = {array1; array2}; % 找到最大长度 maxLength = max(cellfun(@length, arraysCell)); % 初始化一个新的矩阵用于保存结果,并用NaN填补缺失部分 resultMatrix = nan(length(arraysCell), maxLength); for i = 1:length(arraysCell) resultMatrix(i, 1:length(arraysCell{i})) = arraysCell{i}; end disp(resultMatrix); ``` 这种方法能够有效地展示所有原始数值的位置关系,同时通过 NaN 表示不存在的数据点[^1]。 #### 利用水平或垂直连接函数 (`horzcat`, `vertcat`) 如果希望简单地按顺序排列而不考虑维度一致性,则可以直接利用水平或垂直方向上的连接操作来完成任务。需要注意的是这样做可能会丢失关于原各子序列相对位置的信息。 对于列向量(即竖直放置),可采用如下方式: ```matlab vectorA = [1; 2]; % 假设这是一个m×1 的列向量 vectorB = [3; 4; 5]; % n×1 的另一个列向量,其中n>m 或 m<n combinedVector = vertcat(vectorA, vectorB); % 结合成更长的一个列向量 disp(combinedVector); ``` 而对于行向量(横向分布),则应该使用 `horzcat()` 函数代替: ```matlab rowVec1 = [1, 2]; rowVec2 = [3, 4, 5]; concatenatedRowVectors = horzcat(rowVec1, rowVec2); disp(concatenatedRowVectors); ``` 这两种情况下都假设输入是一致类型的向量——要么全是行向量要么全是列向量;否则可能需要转置其中一个以便匹配形状要求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值