MATLAB:将字符串写入Excel

Era*_*mus 5 arrays string matlab

我试图将系数数组写入1列(A1)下的Excel文件中.这是我的片段:

    filename = 'cheby2coefs.xlsx';

for Order = 1:1 
    fprintf('This is');
    disp(Order);

    [b,a] = cheby2(Order, 20, 300/500);
    disp([b,a]);
    %xlswrite(filename,{'Order ',Order},'A1'); %string
    xlswrite(filename,'b','A1');  %string
    xlswrite(filename,b');
    xlswrite(filename,'a');       %string
    xlswrite(filename,a');
end
Run Code Online (Sandbox Code Playgroud)

我瞄准的输出是这样的: 在此输入图像描述

但是,我的代码只是不断创建其他工作表.实现这个的正确方法是什么?

Heb*_*odo 4

问题出在xlswrite以下几行:

来自xlswrite文档:

xlswrite(filename,A,sheet)写入指定的工作表。

这意味着您正在将字符串“b”写入工作表“A1”xlswrite(filename,'b','A1');

xlswrite(filename,A)将数组 A 写入 Excel 文件(文件名)中的第一个工作表,从单元格 A1 开始。

实际上,你不需要做任何事情就可以开始 A1 写作。假设 b 是行向量:

xlswrite(filename,b');
Run Code Online (Sandbox Code Playgroud)

正如你所写,应该足够了。

如果你想指定工作表和列,你可以使用

xlswrite(filename,A,sheet,xlRange)
Run Code Online (Sandbox Code Playgroud)

更新:我现在无法尝试此操作,但我认为它应该有效。

您可以计算a每个border并将它们写入 xls 文件,如下所示:

r = 1; % row number
str = {'a', 'b'};
order = [1 3 5]; % The orders you want to calculate a and b with
for idx = 1:size(order, 2)
    [b,a] = cheby2(order(idx), 20, 300/500); % I do not know about second 
                                             % and third parameters, you should 
                                             % check them.
    vals = [a; b]; % assuming they are row vectors
    cellName = strcat('A', r);
    orderName = strcat('Order ', order(idx));
    xlswrite(filename, orderName, 1, cellName)
    r = r + 1;
    for jdx=1:2
        cellName = strcat('A', r);
        xlswrite(filename, str{jdx}, 1, cellName);
        r = r + 1;
        cellName = strcat('A', r);
        xlswrite(filename, vals(jdx, :), 1, cellName);
        r = r + size(vals, 2);
    end
end
Run Code Online (Sandbox Code Playgroud)