我是靠谱客的博主 激动热狗,这篇文章主要介绍MATLAB 实现读取数据文件,画图并自动将图片保存到文件夹中,现在分享给大家,希望可以做个参考。

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
%%读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线%% 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(95)

评论列表共有 0 条评论

立即
投稿
返回
顶部