matlab:在特定行号处添加一行零

标签 matlab insert rows zero

想要寻求以下帮助:我有一个数据集 131573*8,我想向该数据集添加 19247*8 零行。需要在特定位置添加零行,我将其存储在矩阵 YE 中,其大小为:19247*1。

举个例子: YE 的第一个元素是数字 56。对于该特定行,我想在矩阵数据集中添加一行零。 现在数据集第 55-57 行看起来像这样:

55:11 12 13 14 15 16 17 18

56:21 22 23 24 25 26 27 28

57:31 32 33 34 35 36 37 38

应该是:

55:11 12 13 14 15 16 17 18

56: 0 0 0 0 0 0 0 0

57:21 22 23 24 25 26 27 28

58:31 32 33 34 35 36 37 38

我希望有人可以帮助我 - 我还没有找到任何解决方案。

谢谢!

最佳答案

如果您想在特定行索引处插入行零到数据集中,一种矢量化方法是初始化所需最终大小的零矩阵,然后填充索引向量YE的行以及数据集的内容:

N = size(dataset, 1)+size(YE, 1);
result = zeros(N, size(dataset, 2));
result(setdiff(1:N, YE), :) = dataset;

但是,上述解决方案创建了一个矩阵结果,它使用了更多内存。如果您想直接修改数据集并节省内存(因为它是一个很大的矩阵),这里有一个替代方案:

% Add the necessary number of rows of zeroes to the end:
dataset = [dataset; zeros([size(YE, 1) size(dataset, 2)])];

% Create an index vector to reorder the rows:
[~, index] = sort([setdiff(1:size(dataset, 1), YE).'; YE]);

% Reorder the rows:
dataset = dataset(index, :);

关于matlab:在特定行号处添加一行零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46078918/

相关文章:

PHP 使用 PDO 插入

SQL - 使用列名作为值插入

mysql - 将不存在的记录插入Mysql表中

Mysql COUNT VS num rows 性能

javascript - 如何处理和检查唯一ID?

php - 使用PHP统计在线用户数量

python - Matlab 过滤器与 Python lfilter ValueError 对象深度太小

c - 如何将c代码转换为matlab

matlab - 从子目录递归读取图像

matlab - mod() 操作奇怪的行为