从示波器中捕获的波形处理,此代码源于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格式的数据相关推荐

  1. 用matlab处理表格,matlab删除excel表格数据-如何用matlab处理多个excel表格中的数据...

    如何用matlab处理多个excel表格中的数据 biao='D:\Program Files\matlab\bin\filename.xls'; A1=xlsread (biao,'Sheet1', ...

  2. matlab批量导入excel表格数据,matlab导入excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    如何用matlab读取多个excel表格数据,将每个表格数... 一xlsread()函数,比import简单的多,具体语句:A = xlsread('yourfilename.xls')望高手支招! ...

  3. 利用matlab处理表格数据,/如何用matlab处理多个excel表格中的数据

    excel最大可处理多少条数据 理论上可以处理59999条(行)数据 但是实际上同一个工作表中无法处理这么多数. Excel 怎样做一个客户多个数据的表 1.首先,简单描述问题,在如下的表格中想姓名一 ...

  4. matlab引用数据,excel引用数据-如何用matlab处理excel文件中的数据?

    如何利用matlab根据excel表格里面的数据画图 将待导入的矩阵结数据Excel中,录入时注意行列原矩阵一一对应 录入完以后数据,为了后续步骤使用方便,命名时我们最好把它命名为我们接下来在MATL ...

  5. matlab批量合并表格数据,用matlab合并excel表格数据-如何用matlab读取多个excel表格数据,将每个表格数......

    用matlab如何识别excel里的单元格是否为合并单元格 方法如下: 使用函数xlsread读取单个文件. num=xlsread(filename) filename是单引号括起来的带路径的文件名 ...

  6. matlab excel 排序,“如何用matlab处理多个excel表格中的数据“excel怎么排序

    请问如何在matlab gui界面中插入excel表格并可进行编辑 最简单的方法,gui界面上一个table控件,放置两个按钮. 按钮名字分别改为打开和保存,table的属性里,把columnname ...

  7. matlab 无穷符号,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...

    如何进行级数或数列的求和,在高中<数学>课上的数列和大学<高等数学>中的级数都有有遇到过这种问题,这如果用人脑来计算的话非常耗时,难度较大.但是用matlab就可以轻松解决.下 ...

  8. matlab基带信号速率,如何用MATLAB产生25Gbaud的基带QPSK调制信号

    如何用MATLAB产生25Gbaud的基带QPSK调制信号 包括生成随机符号序列,进行QPSK调制,过采样,脉冲成型滤波和降采样.有错误敬请指正. 参数设置:symbol rate=25Gbaud D ...

  9. matlab求和脚本,如何用matlab进行级数或数列的符号求和?matlab符号求和指令分享...

    如何进行级数或数列的求和,在高中<数学>课上的数列和大学<高等数学>中的级数都有有遇到过这种问题,这如果用人脑来计算的话非常耗时,难度较大.但是用matlab就可以轻松解决.下 ...

  10. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

最新文章

  1. 使用火炬之光资源(转)
  2. JBPM回退功能的实现
  3. strictmath_Java StrictMath nextUp()方法与示例
  4. 作者:钱卫宁,华东师范大学数据科学与工程研究院教授、博士生导师。
  5. 游戏开发中常用的设计模式
  6. C#多线程学习笔记(三)
  7. docker centos7_CentOS7及Docker配置中文字符集问题
  8. FFmpeg滤镜:使用colorkey抠图
  9. java redis教程视频_2020年Java视频教程-Redis全集
  10. 手机锁屏密码忘了怎么办 锁屏密码破解法
  11. 使用TIBCO Rendezvous发送hello world,实现监听和发送
  12. 依托TAPD的敏捷实践
  13. 召回率(Recall)
  14. GateWay的Filter
  15. 基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql)
  16. 高德h5地图api接口_H5,JS中使用微信、高德获取定位
  17. 专业图片处理工具 Adobe Photoshop CC 2019.0.5 for Mac
  18. Java实现阿拉伯数字转大写中文
  19. 蓝汛之获取DAC输出能量【篇】
  20. ITOF vs DTOF

热门文章

  1. opencv4.4.0函数手册_Cobalt strike3.0使用手册
  2. python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
  3. 网络体系架构—运输层协议概述
  4. VTK:绘制一个棋盘并用两个平面对其进行剪辑用法实战
  5. opengl加载显示3D模型IFC类型文件
  6. wxWidgets:wxDragImage 示例
  7. wxWidgets:wxRichTextFieldTypeStandard类用法
  8. wxWidgets:wxProcess类用法
  9. boost::mpl::greater相关的测试程序
  10. boost::mp11::mp_less相关用法的测试程序