失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MATLAB 实现读取数据文件 画图并自动将图片保存到文件夹中

MATLAB 实现读取数据文件 画图并自动将图片保存到文件夹中

时间:2024-02-07 12:28:02

相关推荐

MATLAB 实现读取数据文件 画图并自动将图片保存到文件夹中

实现读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线。

%%读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线%%clc;clear all;% %第一种:读取txt格式文件% load C:\Users\王启奇\Desktop\增益3.3频率1kHz\fengzhi-0922全.txt;% fz = fengzhi_0922_(:,1);%读取TXT数据第一列,脉冲的峰值% wz = fengzhi_0922_(:,2);%读取TXT数据第二列,脉冲峰值所在的位置% %第二种:读取excel格式文件% [fz]=xlsread('C:\Users\王启奇\Desktop\0926.27\0926.xls');% L = length(fz);%定义峰值长度%第三种:读取很多个excel格式文件Path = 'C:\Users\王启奇\Desktop\0926.27\';% 设置数据存放的文件夹路径File = dir(fullfile(Path,'*.xls')); % 显示文件夹下所有符合后缀名为.txt文件的完整信息FileNames = {File.name}'; % 提取符合后缀名为.txt的所有文件的文件名,转换为n行1列%读取特定格式的所有数据Length_Names = size(FileNames,1); % 获取所提取数据文件的个数Data_full = [];%存放所有数据的矩阵for k = 1 : Length_Names % 连接路径和文件名得到完整的文件路径K_Trace = strcat(Path, FileNames(k)); % 读取数据eval(['Data',num2str(k),'=','readmatrix(K_Trace{1,1})',';']);%eval(['a','=''2','+','3',';'])实质为a = 2 + 3;data = eval(['Data',num2str(k)]);Data_full = [Data_full;data];%中间用“,”是行拼接,用“;”是列拼接。end%创建文件夹,用来自动保存生成的图片path = cd; %获取当前路径pic = '图片库'; %将字符型变量赋予picmkdir(pic) %创建名为‘图片库’的文件夹NumChannel = 1 ;%初始化道数for NumChannel=20:120 %道数逐渐增加hs = histogram(Data_full,NumChannel);saveas(gcf,[path,'\',pic,'\',num2str(NumChannel),'.jpg']); %这里pic是变量名称,实际是保存名为‘好美丽的抛物线.jpg’到'图片库'文件夹a = hs.Values;%每个bin的计数b = hs.BinEdges;%分成多个bin后,每个节点的数值c = hs.BinWidth;%每个bin的宽度d = [];%存放周期性数据,每个值都是计数为0的道址/数据极大值所在的道址e = [];%存放方差数据%%第一种:找出计数为0的道址,将道址存入d数组%for i=1:(NumChannel-0) % if a(i)==0 %&& a(i+1)==0% d = [d,i];% end%end%%计算数组d中,道址之间的差值,并计算方差%for j=1:(length(d)-1) % e(j) = d(j+1)-d(j);%end%第二种:找出数据极值,将道址存入d数组[peaks,d] = findpeaks(a); %查找每道计数数据中的波峰for j=1:(length(peaks)-1) e(j) = d(j+1)-d(j);endfangcha = var(e);%方差值if fangcha<1 %&& length(e)>2 %=======应当以半高宽最小作为判断%%记录结果,将数据保存到txt文件中dgz = c * (d(2)-d(1));%此条件下计算出的单光子对应电压gzs_max = b(d(2))/dgz;%第二个大周期块对应的光子数最大值fid = fopen('channel_excel_peaks1.txt','a'); %.txt是存储数据的文件,a是数据向后增加的意思fprintf(fid,'%f\t',NumChannel); %满足条件的道数fprintf(fid,'%f\t',length(d)); %存放当前道数下,满足方差条件、计数为零/数据极值的道的个数fprintf(fid,'%f\t',dgz); %此条件下计算出的单光子电压fprintf(fid,'%f\n',gzs_max); %第二个大周期块对应的光子数最大值fclose(fid);endend% %画出直方图% figure(1)% hs = histogram(Data_full,247);% %画出直方图中点的连线% hold on% figure(2)% pl_fz = hs.Values;% pl_fzx = hs.BinEdges + 0.5*hs.BinWidth;% pl_fzx = pl_fzx(1:(length(pl_fzx)-1));%bin边比柱多一个值% plot(pl_fzx,pl_fz);

对应截图中:读取5个excel文件,将所有数据存放到缓存数组data_full中,画出能谱图。能谱图的道数逐渐增大,并进行简单的筛选,记录符合条件的值以及其他相关信息,写入txt文件中。之后画出不同道数的能谱图,自动保存到文件夹中。

如果觉得《MATLAB 实现读取数据文件 画图并自动将图片保存到文件夹中》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。