You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MATLAB中如何将2920×640矩阵每行后插入2行零转为8760×640矩阵?

可行!而且实现起来非常简单

当然没问题,先帮你算一笔账:你的原始矩阵是2920行,每一行之后插入2行零,总行数就是2920 × (1+2) = 8760行,刚好和你想要的目标矩阵行数完全匹配,完全可行。

这里给你几种MATLAB里高效的实现方法:

方法1:直接初始化零矩阵并填充(推荐,高效直观)

先创建一个8760×640的全零矩阵,然后把原始矩阵的行放到第1、4、7...也就是间隔3行的位置上:

% 假设你的原始矩阵名为A
A = rand(2920, 640); % 这里用随机矩阵做示例
B = zeros(3*size(A,1), size(A,2)); % 创建目标大小的零矩阵
B(1:3:end, :) = A; % 将原始矩阵行填充到对应位置

方法2:用克罗内克积(简洁一行)

利用kron函数的特性,把每一行和[1;0;0]做克罗内克积,自动实现“一行加两行零”的效果:

B = kron(A, [1; 0; 0]);

方法3:索引重组(适合理解原理)

先构建重复的索引,再替换对应行为零:

idx = repmat((1:size(A,1))', 3, 1); % 生成重复3次的行索引
B = A(idx, :); % 先复制原始行三次
B(2:3:end, :) = 0; % 把第2、5、8...行设为零
B(3:3:end, :) = 0; % 把第3、6、9...行设为零

这几种方法都能达到你想要的效果,其中方法1的内存和运算效率最高,适合处理大矩阵。

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

火山引擎 最新活动