Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB:将字符串写入Excel_Arrays_String_Matlab - Fatal编程技术网

Arrays MATLAB:将字符串写入Excel

Arrays MATLAB:将字符串写入Excel,arrays,string,matlab,Arrays,String,Matlab,我试图将系数数组写入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 xlsw

我试图将系数数组写入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
我的目标是这样的输出:


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

问题在于
xlswrite
行:

从文件:

xlswrite(文件名、A、工作表)
写入指定的工作表

这意味着您正在使用
xlswrite(文件名,'b','A1')将字符串'b'写入工作表'A1'

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

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

xlswrite(filename,b');
正如你所写的,这就足够了

如果要指定图纸和柱,可以使用

xlswrite(filename,A,sheet,xlRange)

更新:我现在无法尝试,但我认为应该可以

您可以为每个
订单
计算
a
b
,并将其写入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

xlswrite
每次调用都会不断创建新工作表,因为您没有指定工作表编号

相反,请尝试以下方法:

%// Write b under column A1 in the 1st worksheet
xlswrite(filename, 'b', 1, 'A1')
xlswrite(filename, b(:), 1, 'A2')
最好的做法是首先使用
b(:)
语法将
b
转换为列向量,从而确保
b
被编写为列

此外,如果要在列
B1
下写入下一组系数,可以执行以下操作:

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

请注意,传递的页码仍然保持
1

您是否尝试过
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);

希望它有帮助。< /P>但是如果我想把它们全部放入C++中的1列ALLA FielestRM中呢?我已经编辑了我的帖子,以包含您无法写入的输出。xlswrite在Excel文件中的给定位置写入数据,并且不跟踪任何“流偏移”。你必须自己手动完成,所以不可能?即使算法是1。)在单元格中插入字符串2。)填充后续单元格3。)插入字符串,填充等?你可以这样做,但正如我所说的——你必须自己计算偏移量(起始/偏移单元格)。HebeleHododo已经为您实现了这样的逻辑,请查看他的答案!我将把这个放在我的代码片段的什么地方?[b,a]的内容不是;到第63街还没人住呢iteration@Erasmus看看它现在是否更有意义。orderName指的是什么元素?我的代码段中的Order变量是指我必须循环for循环的次数,以及指示我所处的过滤系数。+1:还没有测试您的逻辑,但乍一看它看起来是正确的。@Erasmus我更新了以使事情更清楚。orderName在您的示例中是一个类似“Order 1”的字符串。当您创建字符串或单元格数组时,不需要额外的括号(
[]
)。。。另外,您的'A1:A1'范围实际上是一个单元格,所以为什么不简单地写'A1'?