0

我想将字符串元胞数组写入 csv 文件,并用数字数据覆盖其中的一部分。我想,为了说明目的,我们可以使用两个矩阵:

a = ones(5,5);
b = zeros(3,3);

我想将 a 写入 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)

但这会覆盖整个文件。如果有任何建议,我将不胜感激。

4

1 回答 1

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 的大小为 4x4 并叠加在起始来自 a(3,3)。第三,这种解决方法不能回答更普遍的问题,即在 matlab 中是否只能覆盖 csv 的特定字段。

于 2013-07-03T14:33:23.843 回答