想要寻求以下帮助:我有一个数据集 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/