在现有 CSV 文件的末尾追加新行
Appending new rows at the end of an existing CSV file
我有一个 MATLAB 代码,它以数组的形式产生多输出,所有输出都有 20 行和 1 列,对于每次迭代,我都有相同的结果,即 5 个数组:Input
、Ftn_Noise_real
, Ftn_Noise_imag
, After_Matchfilter_real
, After_Matchfilter_imag
(都是20行1列)。然后我在代码块中将这五个数组合并为一个数组(20 行和 5 列)。我尝试在 csvwrite
的帮助下将这个数组写入 csv 文件。但是在每次迭代中,它都会覆盖上一次迭代结果的新数据。
我想合并所有迭代的输出。例如,第一次迭代代码写入一个数组,该数组是这五个数组的组合,如数据图像所示,然后第二次迭代应该从第 20 行开始写入到第 40 行,依此类推。最后我得到了一个包含 80 行和 5 列的 csv 文件。
for EbNo = 0:2:4
%here some codes block produce array
.
.
.
%Writing part
filename = ['DATA' '.csv'];
%here ı merge all array as an one array. Then with csvwrite ı transfer these in a csv
newdata = [Input,Ftn_Noise_real,Ftn_Noise_imag,After_Matchfilter_real,After_Matchfilter_imag];
csvwrite(filename,newdata);
end
如果您使用的是 R2019a 或更新版本,则可以使用 writematrix
。它还支持附加到现有文件:
filename = 'test.csv';
if (exist(filename, 'file'))
delete(filename);
end
for i=1:4
A = randi(3, 4);
writematrix(A, filename, 'WriteMode', 'append');
end
readlines('test.csv')
但更好的方法是将所有矩阵合并为一个矩阵,然后通过调用 csvwrite
或 writematrix
一次写入整个数据:
r = 3; % No. of rows
c = 4; % No. of columns
n_iter = 4; % No. of iterations
B = zeros(r*n_iter, c); % pre-allocating B matrix
for ii=1:n_iter
A = randi(10, r, c);
B(((ii-1)*r)+(1:r), :) = A; % appending A to the end of B
end
writematrix(B, filename);
readlines('test.csv') % test contents
我有一个 MATLAB 代码,它以数组的形式产生多输出,所有输出都有 20 行和 1 列,对于每次迭代,我都有相同的结果,即 5 个数组:Input
、Ftn_Noise_real
, Ftn_Noise_imag
, After_Matchfilter_real
, After_Matchfilter_imag
(都是20行1列)。然后我在代码块中将这五个数组合并为一个数组(20 行和 5 列)。我尝试在 csvwrite
的帮助下将这个数组写入 csv 文件。但是在每次迭代中,它都会覆盖上一次迭代结果的新数据。
我想合并所有迭代的输出。例如,第一次迭代代码写入一个数组,该数组是这五个数组的组合,如数据图像所示,然后第二次迭代应该从第 20 行开始写入到第 40 行,依此类推。最后我得到了一个包含 80 行和 5 列的 csv 文件。
for EbNo = 0:2:4
%here some codes block produce array
.
.
.
%Writing part
filename = ['DATA' '.csv'];
%here ı merge all array as an one array. Then with csvwrite ı transfer these in a csv
newdata = [Input,Ftn_Noise_real,Ftn_Noise_imag,After_Matchfilter_real,After_Matchfilter_imag];
csvwrite(filename,newdata);
end
如果您使用的是 R2019a 或更新版本,则可以使用 writematrix
。它还支持附加到现有文件:
filename = 'test.csv';
if (exist(filename, 'file'))
delete(filename);
end
for i=1:4
A = randi(3, 4);
writematrix(A, filename, 'WriteMode', 'append');
end
readlines('test.csv')
但更好的方法是将所有矩阵合并为一个矩阵,然后通过调用 csvwrite
或 writematrix
一次写入整个数据:
r = 3; % No. of rows
c = 4; % No. of columns
n_iter = 4; % No. of iterations
B = zeros(r*n_iter, c); % pre-allocating B matrix
for ii=1:n_iter
A = randi(10, r, c);
B(((ii-1)*r)+(1:r), :) = A; % appending A to the end of B
end
writematrix(B, filename);
readlines('test.csv') % test contents