怎么用matlab处理数据,如何用Matlab处理.wfm格式的数据
从示波器中捕获的波形处理,此代码源于https://ww2.mathworks.cn/matlabcentral/fileexchange/14918-tektronix-wfm-file-reader
function:
1 function [out_descript, outdata, timedata] = wfm_ascii_dpo(fname, data_start, data_stop)
2 % Converts TSD5/6/7k and DPO7k/70k .wfm file to ASCII format
3 % with time array
4 %
5 % data_start and data_stop input arguments are optional
6 % and can be used to read parts of file
7 %
8 % To do: implement fast frame, pixel maps
9 %
10 out = [];
11 if nargin==0
12 fname='';
13 end
14 if isempty(fname)
15 [filename,pname]=uigetfile({'*.wfm', 'Tektronix Waveform Files (*.wfm)';'*.*', 'All Files (*.*)'},'Choose Tektronix WFM file');
16 fname=[pname filename];
17 end
18 %---Open file
19 fd = fopen(fname,'r');
20 if fd==-1
21 error('Problem opening file "%s"',fname)
22 end
23 %---Determine byte ordering, then close and reopen with proper byte ordering
24 ByteOrder = fread(fd,1,'ushort');
25 if ByteOrder==61680
26 fclose(fd);
27 fd = fopen(fname,'r','ieee-be');
28 else
29 fclose(fd);
30 fd = fopen(fname,'r','ieee-le');
31 end
32 %---WFM static file information
33 out.ByteOrder = fread(fd, 1,'ushort' );
34 out.VersionNum = fread(fd, 8,'*char' )';
35 if ~any(strcmp(out.VersionNum,{':WFM#001';':WFM#002';':WFM#003'}))
36 fclose(fd);
37 error('File "%s" is not a valid WFM file',fname)
38 end
39 out.NumDigitsInByteCount = fread(fd, 1,'char' );
40 out.NumBytesToEOF = fread(fd, 1,'long' );
41 out.NumBytesPerPoint = fread(fd, 1,'char' );
42 out.ByteOffsetToCurveBuffer = fread(fd, 1,'long' );
43 out.HorZoomScale = fread(fd, 1,'long' );
44 out.HorZoomPos = fread(fd, 1,'float32');
45 out.VerZoomScale = fread(fd, 1,'double' );
46 out.VerZoomPos = fread(fd, 1,'float32');
47 out.WaveformLabel = fread(fd,32,'*char' )';
48 out.N = fread(fd, 1,'ulong' );
49 out.HeaderSize = fread(fd, 1,'ushort' );
50 %---WFM header
51 out.SetType = fread(fd, 1,'int' );
52 out.WfmCnt = fread(fd, 1,'ulong' );
53 jnk = fread(fd,36,'uchar' ); % Skip these for now
54 out.DataType = fread(fd, 1,'int' );
55 jnk = fread(fd,28,'uchar' ); % Skip these for now
56 switch out.VersionNum
57 case {':WFM#002' ':WFM#003'}
58 jnk = fread(fd, 1,'ushort'); % Skip these for now
59 end
60 jnk = fread(fd,12,'uchar' ); % Skip these for now
61 %---Explicit Dimension 1/2
62 s = [];
63 for n=1:2
64 s.DimScale = fread(fd, 1,'double');
65 s.DimOffset = fread(fd, 1,'double');
66 s.DimSize = fread(fd, 1,'ulong' );
67 s.Units = fread(fd,20,'*char' );
68 s.DimExtentMin = fread(fd, 1,'double');
69 s.DimExtentMax = fread(fd, 1,'double');
70 s.DimResolution = fread(fd, 1,'double');
71 s.DimRefPoint = fread(fd, 1,'double');
72 s.Format = fread(fd, 1,'int' );
73 s.StorageType = fread(fd, 1,'int' );
74 jnk = fread(fd,20,'uchar' ); % Skip these for now
75 s.UserScale = fread(fd, 1,'double');
76 s.UserUnits = fread(fd,20,'*char' );
77 s.UserOffset = fread(fd, 1,'double');
78 switch out.VersionNum
79 case ':WFM#003'
80 s.PointDensity = fread(fd, 1,'double');
81 otherwise
82 s.PointDensity = fread(fd, 1,'ulong' );
83 end
84 s.HRef = fread(fd, 1,'double');
85 s.TrigDelay = fread(fd, 1,'double');
86 out.ExplicitDimension(n) = s;
87 end
88 %---Implicit Dimension 1/2
89 s=[];
90 for n=1:2
91 s.DimScale = fread(fd, 1,'double');
92 s.DimOffset = fread(fd, 1,'double');
93 s.DimSize = fread(fd, 1,'ulong' );
94 s.Units = fread(fd,20,'*char' )';
95 jnk = fread(fd,16,'uchar' ); % Skip these for now
96 s.DimResolution = fread(fd, 1,'double');
97 jnk = fread(fd,12,'uchar' ); % Skip these for now
98 s.UserScale = fread(fd, 1,'double');
99 s.UserUnits = fread(fd,20,'*char' );
100 s.UserOffset = fread(fd, 1,'double');
101 switch out.VersionNum
102 case ':WFM#003'
103 s.PointDensity = fread(fd, 1,'double');
104 otherwise
105 s.PointDensity = fread(fd, 1,'ulong' );
106 end
107 s.HRef = fread(fd, 1,'double');
108 s.TrigDelay = fread(fd, 1,'double');
109 out.ImplicitDimension(n) = s;
110 end
111 %---Time Base 1/2 Information
112 s=[];
113 for n=1:2
114 s.RealPointSpacing = fread(fd, 1,'ulong' );
115 s.Sweep = fread(fd, 1,'int' );
116 s.TypeOfBase = fread(fd, 1,'int' );
117 out.TimeBase(n) = s;
118 end
119 %---WFM Update Spec
120 jnk = fread(fd,24,'uchar'); % Skip these for now
121 %---WFM Curve Information
122 jnk = fread(fd,10,'uchar'); % Skip these for now
123 PrechargeStartOffset = fread(fd, 1,'ulong');
124 DataStartOffset = fread(fd, 1,'ulong');
125 PostchargeStartOffset = fread(fd, 1,'ulong');
126 PostchargeStopOffset = fread(fd, 1,'ulong');
127 EndOfCurveBufferOffset = fread(fd, 1,'ulong');
128 %---FastFrame Frames
129 %OPTIONAL
130 %---Curve Buffer
131 out.CurveSizeInBytes = PostchargeStartOffset - DataStartOffset;
132 out.CurveSize = out.CurveSizeInBytes / out.NumBytesPerPoint;
133 jnk = fread(fd,DataStartOffset,'uchar'); % Skip precharge
134 if nargin<3
135 data_start = 1;
136 data_stop = out.CurveSize;
137 end
138 switch out.NumBytesPerPoint
139 case 1
140 if data_start > 1
141 jnk = fread(fd,data_start-1,'*int8');
142 out.CurveData = fread(fd,data_stop-data_start+1,'*int8');
143 else
144 out.CurveData = fread(fd,data_stop,'*int8');
145 end
146 case 2
147 if data_start > 1
148 out.CurveData = fread(fd,data_start-1,'*int16');
149 out.CurveData = fread(fd,data_stop-data_start+1,'*int16');
150 else
151 out.CurveData = fread(fd,data_stop,'*int16');
152 end
153 end
154
155 %---Close file
156 fclose(fd);
157 %E_DimOffset = out.ExplicitDimension(1,1).DimOffset;
158 %E_DimScale = out.ExplicitDimension(1,1).DimScale;
159 %E_CurveData = out.CurveData;
160 %I_DimOffset = out.ImplicitDimension(1,1).DimOffset
161 %I_DimScale = out.ImplicitDimension(1,1).DimScale
162 y = (out.ExplicitDimension(1,1).DimOffset) + (out.ExplicitDimension(1,1).DimScale)*double(out.CurveData);
163 t = out.ImplicitDimension(1,1).DimOffset + out.ImplicitDimension(1,1).DimScale*(data_start:data_stop);
164 out_descript.Fs = 1/out.ImplicitDimension(1,1).DimScale;
165 out_descript.Ts = out.ImplicitDimension(1,1).DimScale;
166 out_descript.N = out.CurveSize;
167 out_descript.byte = out.NumBytesPerPoint;
168 outdata = y;
169 timedata = t;
View Code
调用函数:
1 clc
2 clear all
3 [out_descript,outdata,timedata]= wfm_ascii_dpo('Tek001.wfm') % wfm_ascii_dpo(fname,data_start,data_stop)
4 figure;
5 plot(timedata * 10^9,outdata * 200,'b-');
6 xlabel('x')
7 ylabel('y)')
8 legend('map')
View Code
来源:https://www.cnblogs.com/571328401-/p/12937868.html
怎么用matlab处理数据,如何用Matlab处理.wfm格式的数据相关推荐
- 用matlab处理表格,matlab删除excel表格数据-如何用matlab处理多个excel表格中的数据...
如何用matlab处理多个excel表格中的数据 biao='D:\Program Files\matlab\bin\filename.xls'; A1=xlsread (biao,'Sheet1', ...
- matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......
如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...
- 利用matlab处理表格数据,/如何用matlab处理多个excel表格中的数据
excel最大可处理多少条数据 理论上可以处理59999条(行)数据 但是实际上同一个工作表中无法处理这么多数. Excel 怎样做一个客户多个数据的表 1.首先,简单描述问题,在如下的表格中想姓名一 ...
- matlab引用数据,excel引用数据-如何用matlab处理excel文件中的数据?
如何利用matlab根据excel表格里面的数据画图 将待导入的矩阵结数据Excel中,录入时注意行列原矩阵一一对应 录入完以后数据,为了后续步骤使用方便,命名时我们最好把它命名为我们接下来在MATL ...
- matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......
用matlab如何识别excel里的单元格是否为合并单元格 方法如下: 使用函数xlsread读取单个文件. num=xlsread(filename) filename是单引号括起来的带路径的文件名 ...
- matlab excel 排序,“如何用matlab处理多个excel表格中的数据“excel怎么排序
请问如何在matlab gui界面中插入excel表格并可进行编辑 最简单的方法,gui界面上一个table控件,放置两个按钮. 按钮名字分别改为打开和保存,table的属性里,把columnname ...
- matlab 无穷符号,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...
如何进行级数或数列的求和,在高中<数学>课上的数列和大学<高等数学>中的级数都有有遇到过这种问题,这如果用人脑来计算的话非常耗时,难度较大.但是用matlab就可以轻松解决.下 ...
- matlab基带信号速率,如何用MATLAB产生25Gbaud的基带QPSK调制信号
如何用MATLAB产生25Gbaud的基带QPSK调制信号 包括生成随机符号序列,进行QPSK调制,过采样,脉冲成型滤波和降采样.有错误敬请指正. 参数设置:symbol rate=25Gbaud D ...
- matlab求和脚本,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...
如何进行级数或数列的求和,在高中<数学>课上的数列和大学<高等数学>中的级数都有有遇到过这种问题,这如果用人脑来计算的话非常耗时,难度较大.但是用matlab就可以轻松解决.下 ...
- 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据
Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...
最新文章
- 使用火炬之光资源(转)
- JBPM回退功能的实现
- strictmath_Java StrictMath nextUp()方法与示例
- 作者:钱卫宁,华东师范大学数据科学与工程研究院教授、博士生导师。
- 游戏开发中常用的设计模式
- C#多线程学习笔记(三)
- docker centos7_CentOS7及Docker配置中文字符集问题
- FFmpeg滤镜:使用colorkey抠图
- java redis教程视频_2020年Java视频教程-Redis全集
- 手机锁屏密码忘了怎么办 锁屏密码破解法
- 使用TIBCO Rendezvous发送hello world,实现监听和发送
- 依托TAPD的敏捷实践
- 召回率(Recall)
- GateWay的Filter
- 基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql)
- 高德h5地图api接口_H5,JS中使用微信、高德获取定位
- 专业图片处理工具 Adobe Photoshop CC 2019.0.5 for Mac
- Java实现阿拉伯数字转大写中文
- 蓝汛之获取DAC输出能量【篇】
- ITOF vs DTOF
热门文章
- opencv4.4.0函数手册_Cobalt strike3.0使用手册
- python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
- 网络体系架构—运输层协议概述
- VTK:绘制一个棋盘并用两个平面对其进行剪辑用法实战
- opengl加载显示3D模型IFC类型文件
- wxWidgets:wxDragImage 示例
- wxWidgets:wxRichTextFieldTypeStandard类用法
- wxWidgets:wxProcess类用法
- boost::mpl::greater相关的测试程序
- boost::mp11::mp_less相关用法的测试程序