我在Excel电子表格中存储MATLAB字符串。
我的数据如下:
Matrix =
[644x16 char]
[686x16 char]
[569x13 char]
[660x13 char]
[619x13 char]
[599x13 char]
[607x13 char]
[702x13 char]
[633x13 char]
[623x11 char]
[645x11 char]
[697x11 char]
...
我想将这些字符串保存在Excel列中。由于并非所有字符串都具有相同数量的字符,因此我被迫将此数据存储在cell
数组中。
有什么想法吗?非常感谢你的配偶。
答案 0 :(得分:0)
试试这个:
% test data
Matrix = {['ab';'cd'];['efg';'hij';'klm']};
fid = fopen('out.csv', 'w');
% For each element of cell
for i = 1:length(Matrix);
mat = Matrix{i};
% for each line in cell-element
for ii = 1:size(mat,1)
fwrite(fid, mat(ii,:));
fwrite(fid,';');
end
end
fclose(fid);
输出文件的内容将是: AB; CD; EFG; HIJ; KLM;
答案 1 :(得分:0)
要使用xlswrite
将不同大小的多个矩阵写入Excel文件,请为每个子矩阵指定起始单元格:
<强> xlsWriteMatCell.m 强>
function xlsWriteMatCell(fileName,M)
startCells = cumsum([1 cellfun(@(c)size(c,1),M)]);
startCells(end) = [];
for ic = 1:numel(startCells),
xlswrite(fileName,M{ic},1,['A' num2str(startCells(ic))]);
end
<强>测试强>
Matrix = {rand(5,4),rand(6,6),rand(3,3)};
xlsWriteMatCell('test.xlsx',Matrix)
有字符:
Matrix = {char(randi(25,5,4)+64),char(randi(25,6,6)+64),char(randi(25,3,3)+64)}
xlsWriteHetro('testChars.xlsx',Matrix)
这比写入原始csv文件慢得多,但它会为您提供Excel电子表格。