概述
实现读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线。
%%读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线%%
clc;
clear all;
% %第一种:读取txt格式文件
% load C:Users王启奇Desktop增益3.3频率1kHzfengzhi-0922全.txt;
% fz = fengzhi_0922_(:,1);%读取TXT数据第一列,脉冲的峰值
% wz = fengzhi_0922_(:,2);%读取TXT数据第二列,脉冲峰值所在的位置
% %第二种:读取excel格式文件
% [fz]=xlsread('C:Users王启奇Desktop20220926.2720220926.xls');
% L = length(fz);%定义峰值长度
%第三种:读取很多个excel格式文件
Path = 'C:Users王启奇Desktop20220926.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 = '图片库'; %将字符型变量赋予pic
mkdir(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);
end
fangcha = 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,'%ft',NumChannel); %满足条件的道数
fprintf(fid,'%ft',length(d)); %存放当前道数下,满足方差条件、计数为零/数据极值的道的个数
fprintf(fid,'%ft',dgz); %此条件下计算出的单光子电压
fprintf(fid,'%fn',gzs_max); %第二个大周期块对应的光子数最大值
fclose(fid);
end
end
% %画出直方图
% 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 实现读取数据文件,画图并自动将图片保存到文件夹中的全部内容,希望文章能够帮你解决MATLAB 实现读取数据文件,画图并自动将图片保存到文件夹中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复