MATLAB从文件得出数据并计算吸收光谱

news2025/1/12 20:40:14

这一系列就是科研用的真实程序了,也是对自己的一个备忘录

真的收购每次都重写了

但真的文件太多了找不到啊!!!

好吧是我废物

废话不多说,这就开始

基础的清理:

clear
clc
close all

读取文件中的数据(来自示波器直接保存)

data=csvread('1\DC\Tek000_ALL.csv',13,0);%csvread只能读取纯数据,跳过前面的字符
%此时data中应该储存了对应的五列数据,我提取了两个通道,中间有一个空列
%读取另一个文件
data2=csvread('1\TDC\Tek000_ALL.csv',13,0);
%将data分成两部分
ch4 = data(:,2);%4通道结果
MATH1 = data(:,5);
T_MATH1 = data2(:,5);
%分别得到两列数据

详细的注释写在每一行了

csvread函数读取文件中的数值,但是只能读取数字,需要汉字会读取失败

这里从第十三行开始读取,结果是一个矩阵

首先绘制原始数据的图像:

%绘制原始图像:
figure(1)
x = 1:length(ch4);%两信号的x轴理论上是相同的
[AX,H1,H2] = plotyy(x,ch4,x,MATH1,'plot');
set(get(AX(1),'Ylabel'),'String','ch4');%设置左边的y轴标签
set(get(AX(2),'Ylabel'),'String','MATH1');%设置右边的y轴标签
xlabel('Time');
set(H1,'Linestyle','--');%设置曲线1的线型
set(H2,'Linestyle',':');%设置曲线2的线型

这里用到了在同一张图中绘制两个y轴的数据

在我的MATLAB基础操作专栏中有详细解释:

https://blog.csdn.net/fendoudecheng/article/details/130218116

实验数据,当然是不会放效果图的,自己想象~

使用移动平均函数平滑曲线

主要是测量的时候噪音较大:

%可以看到还是有很多高频的震荡,这里再次取平均
%直接使用移动均值函数
%M = movmean(A,k) 返回由局部 k 个数据点的均值组成的数组
ave_ch4 = movmean(ch4,16);%4通道结果
ave_MATH1 = movmean(MATH1,16);%1通道相邻16个点取平均后的结果
ave_T_MATH1 = movmean(T_MATH1,16);%1通道相邻16个点取平均后的结果

这里分别取十六个采样点进行平均

移动平均就是一个数组相邻的十六个取平均

原数组长度:200000,改变后的长度:200000

注意这可不是变成十六分之一哦

绘制平滑后的曲线:

% 另一种方式绘制:
figure(2)
yyaxis left
plot(x,ave_ch4)
yyaxis right
plot(x,ave_MATH1)
set(H1,'Linestyle','--');%设置曲线1的线型
set(H2,'Linestyle',':');%设置曲线2的线型

同样是一张图两个y轴,注意这里用了一种新的方法

按照MATLAB官方的说法,这个更提倡

画图:

%比较直接透射和经过铷泡
figure(3)
plot(x,10*ave_MATH1,x,5*ave_T_MATH1);
hold on
plot(x,5*ave_T_MATH1-10*ave_MATH1);

我这里直接的投射是单调递减的,用来标定一个周期:

%得到真正的谱
[m1,index1] = max(ave_T_MATH1);%取数组的最大值和对应的序号
[m2,index2] = min(ave_T_MATH1);%取数组的最小值和对应的序号
x = index1:index2;
figure(4)
plot(x,5*ave_T_MATH1(index1:index2)-10*ave_MATH1(index1:index2));

最后是归一化:

%归一化
% T = 5*ave_T_MATH1(index1:index2)-10*ave_MATH1(index1:index2);
% T = T/max(T);
ave_MATH1 = ave_MATH1(index1:index2);
ave_MATH1 = max(ave_T_MATH1)-ave_MATH1;
ave_MATH1 = ave_MATH1/max(ave_MATH1);
figure(5);
plot(x,ave_MATH1);

注意这里,求归一化的过程,也就是归一化怎么进行:

1、用整张图的最大值减去整个图,得到吸收谱,归一化

2、用透射谱减,得到吸收谱,归一化

这里不太精确,用第一种就行

最后是保存在文件内:

saveas(gca,'my2.png')

结束

放个图做封面吧:

 (图片来自于网络)

上图搜索关键词:做实验哪有不疯的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/870197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Telnet是什么

一.Telnet是什么 Telnet协议是TCP/IP协议家族中的一员,是Internet远程登陆服务的标准协议和主要方式。 二.Telnet的作用 1.telnet就是查看某个端口是否可访问。 我们在搞开发的时候,经常要用的端口就是 8080。那么你可以启动服务器,用tel…

web会话跟踪以及JWT响应拦截机制

目录 JWT 会话跟踪 token 响应拦截器 http是无状态的,登录成功后,客户端就与服务器断开连接,之后再向后端发送请求时,后端需要知道前端是哪个用户在进行操作。 JWT Json web token (JWT), 是为了在网络应用环境间传递声明而…

Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)

目录 一.下载及安装及环境配置 1.下载及安装 2.环境变量的配置 3.检测是否安装成功 4.配置Maven 1.更换本地仓库 2. 配置镜像 二.集成eclipse完成案例 1.eclipse前期配置Maven 2.创建Maven工程 一.下载及安装及环境配置 1.下载及安装 下载地址:Maven – Down…

【Kubernetes】当K8s出现问题时,从哪些方面可以排查

前言 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kub…

VUE3组件

组件基础 {#components-basics} 组件允许我们将 UI 划分为独立的、可重用的部分,并且可以对每个部分进行单独的思考。在实际应用中,组件常常被组织成层层嵌套的树状结构: 这和我们嵌套 HTML 元素的方式类似,Vue 实现了自己的组件…

Mac下⬇️Git如何下载/上传远程仓库

使用终端检查电脑是否安装Git git --version 通过此文章安装Git ➡️ ​​​​​​​传送门🌐 方式1⃣️使用终端操作 1.下载——克隆远程仓库到本地 git clone [远程地址] 例:git clone https://gitee.com/lcannal/movie.git​ 2.编…

无感部署 - 蓝绿部署、AB测试、灰度发布

蓝绿部署 蓝绿部署(Blue-Green Deployment)是一种软件发布和部署的策略,旨在实现无缝的应用程序升级和回滚。在蓝绿部署中,同时存在两个环境:一个是当前稳定的生产环境(蓝色环境),另…

linux 命令--查看网络端口命令

使用 netstat 检查端口 netstat 是一个命令行工具,可以提供有关网络连接的信息。 netstat - atulnp会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段 -a :all,表示列出所有的连接,服务监听&#xff…

新型智慧城市整体规划建设方案[67页PPT]

导读:原文《优_新型智慧城市整体规划建设方案[67页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需…

【小梦C嘎嘎——启航篇】内存管理小知识~

【小梦C嘎嘎——启航篇】内存管理小知识~😎 前言🙌malloc/calloc/realloc的区别?new 与 deletenew与delete要找好搭档才能保证万无一失 new 与 delete的内部实现细节是怎么样的呢???new 的内部实现细节dele…

Mybatis 小结

一、Mybatis 基本构成 MyBatis的整体分为基础支持层、核心处理层、接口。 1.1、基础支持层 1.1.1、数据源模块 MyBatis自身提供了相应的数据源实现,也提供了与第三方接口数据源集成的接口,这些功能都位于数据源模块之中。 1.1.2、事务管理模块 …

FPGA应用学习笔记----定点除法的gold算法流水线设计

猜一个Y0 a和b上下都Y0 分母越接近一,分子就越接近答案 误差: 下一步迭代为 Y的迭代值: 误差值: 代码的实现如上所示

GrapeCity Documents for Imaging Crack

GrapeCity Documents for Imaging Crack 增加了对双面打印的支持。 GcExcel.NET支持PrintOutOptions类中的Duplex枚举,以启用/禁用页面上的双面打印。 枚举中有四个选项,用户可以相应地使用它们来打印工作簿: 双面打印。Default表示打印机的默…

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 纯数学方法 思维题

Codeforces Round 892 (Div. 2) C. Another Permutation Problem 源码&#xff1a; #include <iostream> #include <algorithm> #include <set> #include <map> #include <queue> #include <vector> #include <stack> #include &l…

【数据结构•并查集】矩形

题目描述 在一个平面上有n个矩形。每个矩形的边都平行于坐标轴并且都具有值为整数的顶点。我们用如下的方式来定义块。 每一个矩形都是一个块。 如果两个不同的矩形有公共线段&#xff0c;那么它们就组成了一个新的块来覆盖它们原来的两个块。 例子&#xff1a; 在图1中的矩形…

软考高级架构师——5、系统规划分析与设计方法

系统计划主要用于描述从项目提出、选择到确立的过程&#xff0c;包括系统项目的提出与可行性 分析&#xff0c;系统方案的制订、评价和改进&#xff0c;新旧系统的分析和比较&#xff0c;以及现有软件、硬件和数据 资源的有效利用等问题。 1、项目的提出与选择 项目的立项目标…

Maven从入门到好难

参考文献 永远最好的官网 超赞maven系列文章 1. 为啥要有maven 想当初&#xff0c;刚毕业刚工作&#xff0c;之前学的C&#xff0c;java不懂&#xff0c;部门用的Spring&#xff0c;于是开始学习SSM&#xff0c;妈的&#xff0c;jar包好难整&#xff0c;还要一个个下载好放到…

单片机直驱两相四线步进电机研究

【本文发布于https://blog.csdn.net/Stack_/article/details/132236329&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 双极性步进电机&#xff08;两相四线步进电机&#xff09;&#xff0c;原理的东西就先不讲太多了&#xff0c;还没搞清楚&#xff0c;边查资料边…

ARTS 挑战打卡的第一周,我学到了这些~

目录 前言 一、学习的内容 二、超时怎么办那就换种思路看题解 三、学习打卡成果展示 3.1 Github的小技巧 3.2 英文文章阅读 3.3 一篇很不错的Java面试题博客 四、学习技巧的总结 前言 关于 ARTS 的释义 ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读…

Javascript异步编程的4种方法

你可能知道&#xff0c;Javascript语言的执行环境是"单线程"&#xff08;single thread&#xff09;。 所谓"单线程"&#xff0c;就是指一次只能完成一件任务。如果有多个任务&#xff0c;就必须排队&#xff0c;前面一个任务完成&#xff0c;再执行后面一…