Arrays MATLAB:将字符串写入Excel
我试图将系数数组写入Excel文件的第1列(A1)。以下是我的片段: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
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'?