⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hilbert.m

📁 matlab中的Hilbert变换
💻 M
字号:
%求取信号的希尔伯特变换
% function BAI(constant)

[fname,pname]=uigetfile('*.csv','选择需要数据处理的文件');   %通过对话框读取数据文件
%fp=fopen(strcat(pname,fname),'r');
signal1=dlmread(strcat(pname,fname),',',0,0);   %从第一行第0列开始读数据,因为索引号是从0开始的。第0行是写的表识,生成一个矩阵.第1列示时间,第2列是幅值.
                                               %生成10000*2的矩阵
for t=1:300
    signalamplitude(t)=signal1(t,1);%读取前面生成的矩阵,从第t行第2列开始读取幅值.生成1*10000的矩阵
end
% for t=1:2
% 	sample(t)=signal1(t,1);
% end
% f=1/(sample(2)-sample(1));%采样率
f=2.0*10^8;     %采样率
signal=reshape(signalamplitude,300,1);%求矩阵的转置.求signalf的转置矩阵

%找幅值最大值所对应的序号
a1=0;%记录最大值
b1=1;%记录最大值所在的位置
%循环比较
for p1=1:300
   if abs(signal(p1,1))>a1
      a1=abs(signal(p1,1));
      b1=p1;
   end   
end 
a1;%幅值最大值点
b1;%幅值最大值点所对应的序号
t=signal1(b1,1);%幅值最大值点所对应的时间

%找信号幅值的最大值
% for p=1:10000;
%   if signalamplitude(p)==nanmax(signalamplitude(p));
%         if signal(p,1)==max(signal(p,1));
%        xmax=p;
%    end    
% end  
% p
% max(signal(p,1))
% nanmax(signal(p,1))

%信号的重现
m=0;
  for i=1:300
     if signal1(i,1)<0;%找时间为负的点
         m=m+1;
     else
       break;
     end
   end   

% hold on
i=1:300;
x=i*1e3/f;%横轴是以ms为单位
% x=(i-m)*1e3/f;%横轴是以ms为单位
y=signal;
h=hilbert(y);
envelop=abs(h);
%axis([-inf inf -4 4]);
plot(x,y,'b');
xlabel('时间(ms)');  
% ylabel('幅度(v),实线(粉色)为原信号,虚线(蓝色)为希尔伯特变换');
ylabel('幅度(v)');
intensity1=trapz(x,envelop)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -