在excel电子表格中存储单元格数组中包含的MATLAB字符串

时间:2014-10-31 11:34:52

标签: string excel matlab matrix cell-array

我在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数组中。

有什么想法吗?非常感谢你的配偶。

2 个答案:

答案 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)

enter image description here

有字符:

Matrix = {char(randi(25,5,4)+64),char(randi(25,6,6)+64),char(randi(25,3,3)+64)}
xlsWriteHetro('testChars.xlsx',Matrix)

enter image description here

这比写入原始csv文件慢得多,但它会为您提供Excel电子表格。