5

係数の配列を Excel ファイルの 1 列 (A1) に書き込もうとしています。これが私のスニペットです:

    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

私が目指す出力は次のようなものです: ここに画像の説明を入力

ただし、私のコードは他のシートを作成し続けます。これを実装する適切な方法は何ですか?

4

3 に答える 3

4

問題は次のxlswrite行にあります。

xlswriteドキュメントから:

xlswrite(filename,A,sheet)指定されたワークシートに書き込みます。

つまり、文字列「b」をシート「A1」に書き込んでいますxlswrite(filename,'b','A1');

xlswrite(filename,A)配列 A を Excel ファイル filename の最初のワークシートに、セル A1 から書き込みます。

A1 で書き始めるために実際には何もする必要はありません。b が行ベクトルであると仮定します。

xlswrite(filename,b');

あなたが書いたように、十分なはずです。

シートと列を指定したい場合は、使用できます

xlswrite(filename,A,sheet,xlRange)

更新:今はこれを試すことはできませんが、うまくいくはずです。

aand bfor everyを計算しorderて、次のように 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
于 2013-01-17T12:14:26.683 に答える
3

xlswriteワークシート番号を指定しなかったため、呼び出しごとに新しいシートを作成し続けます。

代わりに、これを試してください:

%// Write b under column A1 in the 1st worksheet
xlswrite(filename, 'b', 1, 'A1')
xlswrite(filename, b(:), 1, 'A2')

最初に構文bを使用して列ベクトルに変換することにより、 が列として記述されていることを確認することをお勧めします。b(:)

さらに、 column の下に次の係数セットを書きたい場合B1は、次のようにします。

%// Write a under column B1 in the 1st worksheet
xlswrite(filename, 'a', 1, 'B1')
xlswrite(filename, a(:), 1, 'B2')

通過したシート番号は残りますのでご注意ください1

于 2013-01-17T12:14:34.273 に答える
0

試しましたxlswrite1か?モジュールはここからダウンロードできます

完全なモジュールは次のとおりです。

filename = 'cheby2coefs.xlsx';
Excel = actxserver('Excel.Application');
Workbook = invoke(Excel.Workbooks, 'open', filename);
set(Excel,'Visible',1);

temp_text= [{'Text'}];
Location = ['A1:A1'];
sheetname = 'Sheet1';
%%

[status, message] = xlswrite1(ExcelFilename, temp_text, sheetname, Location);
if status == 0,
    errordlg(message.message);
end

invoke(Workbook,'Save');
invoke(Excel,'Quit');
delete(Excel);

それが役に立てば幸い。

于 2013-01-17T12:46:04.733 に答える