我想将字符串的单元格数组写入csv文件,并用数字数据覆盖它们的一部分。我想,为了便于说明,我们可以使用两个矩阵:
a = ones(5,5);
b = zeros(3,3);
我想写一个csv文件,然后用b覆盖这个文件的特定字段,结果是:
1 1 1 1 1
1 1 1 1 1
1 1 0 0 0
1 1 0 0 0
1 1 0 0 0
有没有办法在matlab中执行此操作?我试过了
csvwrite('foo.csv', a);
dlmwrite('foo.csv', b, 'roffset', 2, 'coffset', 2)
但这会覆盖整个文件。我会感谢任何建议。
答案 0 :(得分:0)
以下是基于Marcin建议的解决方案:
datsize = size(a);
precision = 6;
output_cell = reshape(cellstr(num2str(a(:),precision)), size(a));
for i = 3:datsize(1,1),
for j = 3:datsize(1,2),
output_textdata(i,j) = output_cell(i-2,j-2);
end
end
cell2csv('foo.csv', output_textdata);
虽然这会产生预期的结果,但仍存在三个问题。首先,'精度'因细胞而异。其次,这对于该脚本的预期有限应用不是问题,如果矩阵b与矩阵a部分重叠并且部分地超过其尺寸,则该代码将产生错误,例如,b具有4×4的大小并且叠加在起始上来自(3,3)。第三,这种解决方法没有回答更一般的问题,即是否只能在matlab中覆盖csv的特定字段。