日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

怎么用matlab处理数据,如何用Matlab处理.wfm格式的数据

發布時間:2024/9/27 循环神经网络 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么用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格式的数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。