我想制作一个包含字符串和数字混合的文本文件。示例如下:
clear all
fakeData = @(location) struct('Location',location,'AirT',rand(320,1),'SolRad',rand(320,1),'Rain',rand(320,1));
s(1) = fakeData('England');
s(2) = fakeData('Wales');
s(3) = fakeData('Scotland');
s(4) = fakeData('Ireland');
FieldName = {s.Location};
R = corrcoef([s.AirT],'rows','pairwise');
R_Values = [FieldName(nchoosek(1:size(R,1),2)) num2cell(nonzeros(tril(R,-1)))];
MeanCorr = mean(cell2mat(R_Values(:,3)));
Headings = {'L1','L2','Correlation'};
R_Values1 = [Headings;R_Values];
R_Values1 = [R_Values1; {'','Mean',MeanCorr}];
为了打印R_Values,我只需输入:
for i=11:length(R_Values);
fprintf(1,'%12s\t%12s\t%9.6f\n',R_Values{i,1},R_Values{i,2},R_Values{i,3})
end
但是,当尝试为R_Values1执行此操作时,我失败了,我不知道如何在R_Values1的第一行和最后一行中允许不同的格式。
答案 0 :(得分:2)
在MATLAB中:要在同一个文件中编写字符串和数字,您需要
1)使用sprintf
将数字转换为格式化字符串2)连接所有字符串
3)使用fprintf写入文件
示例:您要将Nx1数组字符串和Nx1数组编号写入Fileout.txt
% define output file and clean old versions:
fileout='Fileout.txt'
system(['rm -f ' fileout]);
% open output file in the 'a'ppend mode
fid=fopen(fileout,'a');
% loop over all lines of both arrays:
for i= 1:size(Numbers,1)
s = sprintf('%10.3f',Numbers(i));
fprintf(fid,'%s\n',[Strings(i,:) s]);
end
答案 1 :(得分:1)
由于标题行的格式与数据行不同,因此我看到两个选项。
fprintf
语句或<; li>打印标题行
xlswrite
将单元格数组R_Values1
写入文件。根据MATLAB documentation'xlswrite'将创建一个CSV文件,如果Excel不可用,否则它将创建可能不适合您的Excel文件。也许其他人可能对处理标题行有不同的建议。