Matlab繪制信號包絡線


Matlab繪制包絡線可以通過hilbert或者envelope實現,先說hilbert


Hilbert 變換

 

Hilbert 變換可用於形成解析信號。解析信號在通信領域中很有用,尤其是在帶通信號處理中。工具箱函數 hilbert 計算實數輸入序列 x 的 Hilbert 變換,並返回相同長度的復數結果,即 y = hilbert(x),其中 y 的實部是原始實數數據,虛部是實際 Hilbert 變換。在涉及到連續時間解析信號時,y 有時被稱為解析信號。離散時間解析信號的關鍵屬性是它的 Z 變換在單位圓的下半部分為 0。解析信號的許多應用都與此屬性相關;例如,用解析信號避免帶通采樣操作的混疊效應。解析信號的幅值是原始信號的復包絡。

%% 基本參數
A = 1; % 激勵信號幅值
N = 15; % cycle數,即激勵信號波峰數
fck = 100; % 激勵中心頻率 kHz
fc = 100e3; % 激勵信號中心頻率,Hz
T0 = 1e-4; % 導波傳播時間
T = 4.0*T0; % 激勵持續時長
dt = 1/(20*fc)/2; % 時間步長,在最大步長基礎上除以2
t = [0:dt:T]'; % 時間序列
V = A*[heaviside(t)-heaviside(t-N/fc)].*(1-cos(2*pi*fc*t/N)).*sin(2*pi*fc*t);
h = hilbert(V); % Hilbert變換
figure
plot(t,V)

  

 

 

 

%% 包絡繪制
figure
plot(t,V)
hold on
plot(t,abs(h),'--','linewidth',1.5)
hold on
plot(t,-1*abs(h),'-.','linewidth',1.5)
grid on

  

 

 

 




envelope

envelope返回輸入序列x的上下包絡線,作為其解析信號的大小。x的解析信號是利用希爾伯特實現的離散傅里葉變換得到的。這個函數首先移除x的均值,然后在計算包絡線之后再把它加回來。如果x是一個矩陣,那么包絡線對x的每一列都是獨立的。

% 信號生成
t = 0:1/2000:2-1/2000;
q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
plot(t,q)

  

 

 

% 包絡線繪制
[up,lo] = envelope(q);
figure
plot(t,q)
hold on
plot(t,up,t,lo,'linewidth',1.5)
legend('signal','上包絡線','下包絡線')
hold off

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM