250 likes | 393 Views
鼾音訊號測量計畫. 執導老師 : 侯春茹 老師 賴 彥 亨 個人部分作業. 鼾聲測量訊號. 軟顎 部位的鼾聲頻率大多分布在 150 Hz~300 Hz 之間 , 舌根 部位之頻率大多分布在 500 Hz~750 Hz. 原始訊號. 原始訊號取小段. 補零點訊號. 強度 頻譜 (magnitude spectrum). 相位頻譜 PHASE. %% N = length( SignalData ); t = (1:N)/ fs ; signal_detrend = detrend ( SignalData );
E N D
鼾音訊號測量計畫 執導老師:侯春茹 老師賴彥亨 個人部分作業
鼾聲測量訊號 軟顎部位的鼾聲頻率大多分布在 150 Hz~300 Hz 之間, 舌根部位之頻率大多分布在 500 Hz~750 Hz 原始訊號
%% N = length(SignalData); t = (1:N)/fs; signal_detrend=detrend(SignalData); signal_1=signal_detrend(8735000:8815000) figure(1) plot(signal_1) print('-f1', '-djpeg', '-r300', 'fig1'); %% 原始訊號 L=131072; T=1/fs; ts=0:T:60; N=length(ts); u=fft(signal_1,L); u_mag=abs(u); u_ang=angle(u); fd=1/(L*T); % 頻率間隔 m=0:(L-1); % 頻率點數 fy=m.*fd; fy_2=fy(1:(length(fy)/2)) u_2=u(1:(length(u)/2)) k=fs*(0:length(u)-1)/length(u); u_mag=abs(u_2); u_ang=angle(u_2); figure(2) plot(fy_2,u_mag) title('強度頻譜') ylabel('Magnitude') xlabel('Frequency index u') print('-f2', '-djpeg', '-r300', 'fig2'); figure(3) plot(fy_2,angle(u_2)) title('相位頻譜') ylabel('Phase') xlabel('Frequency index u') print('-f3', '-djpeg', '-r300', 'fig3'); 程式碼
程式碼 • %% 原始訊號 • SignalData = csvread('hand.csv'); %讀取CSV檔案 • SignalData_detrend=detrend(SignalData); % 去基線飄移 • figure(1) • subplot(211); • plot(SignalData); • axis tight; • title('原始訊號'); • subplot(212); • plot(SignalData_detrend); • axis tight; • title('去基線飄移');
subplot(312); plot(firM2_SignalData_detrend,'b-'); axis tight; title(' FIR filter M=10'); subplot(313); plot(firM3_SignalData_detrend,'b-'); axis tight; title(' FIR filter M=15'); print('-f2', '-djpeg', '-r300', 'fig2'); figure(3) subplot(311); plot(firM1_filt,'b-'); axis tight; title(' FIR filtfilt M=5'); subplot(312); plot(firM2_filt,'b-'); axis tight; title(' FIR filtfilt M=10'); subplot(313); plot(firM3_filt,'b-'); axis tight; title(' FIR filtfilt M=15'); 濾波 • M1=5; • b1=ones(M1,1)/5; • firM1_SignalData_detrend=filter(b1,1,SignalData_detrend); • firM1_filt=filtfilt(b1,1,SignalData_detrend); • M2=10; • b2=ones(M2,1)/10; • firM2_SignalData_detrend=filter(b2,1,SignalData_detrend); • firM2_filt=filtfilt(b2,1,SignalData_detrend); • M3=15; • b3=ones(M3,1)/15; • firM3_SignalData_detrend=filter(b3,1,SignalData_detrend); • firM3_filt=filtfilt(b3,1,SignalData_detrend); • figure(2) • subplot(311); • plot(firM1_SignalData_detrend,'b-'); • axis tight; • title(' FIR filter M=5');
取週期 subplot(313); plot(firM3_SignalData_detrend,'r-'); hold on plot(firM3_filt,'b--'); hold off legend('filter','filtfilt',1) axis tight; axis([0 125000 -50 50]); • figure(321) • subplot(311); • plot(firM1_SignalData_detrend,'r-'); • hold on • plot(firM1_filt,'b--'); • hold off • legend('filter','filtfilt',1) • axis tight; • axis([0 125000 -50 50]); • title(' FIR M=5'); • subplot(312); • plot(firM2_SignalData_detrend,'r-'); • hold on • plot(firM2_filt,'b--'); • hold off • legend('filter','filtfilt',1) • axis tight; • axis([0 125000 -50 50]); • title(' FIR M=10');
subplot(313); plot(firM3_SignalData_detrend(120000:160000),'r-'); hold on plot(firM3_filt(120000:160000),'b--'); plot(SignalData_detrend(120000:160000),'k:'); hold off axis tight; legend('filter','filtfilt','SignalData',1) title('切訊號 M=15'); 切訊號 • figure(4) • subplot(311); • plot(firM1_SignalData_detrend(120000:160000),'r-'); • hold on • plot(firM1_filt(120000:160000),'b--'); • plot(SignalData_detrend(120000:160000),'k:'); • hold off • axis tight; • legend('filter','filtfilt','SignalData',1) • title('切訊號 M=5'); • subplot(312); • plot(firM2_SignalData_detrend(120000:160000),'r-'); • hold on • plot(firM2_filt(120000:160000),'b--'); • plot(SignalData_detrend(120000:160000),'k:'); • hold off • axis tight; • legend('filter','filtfilt','SignalData',1) • title('切訊號 M=10');
figure(5); % m1 subplot(121); plot(addwindow1_filt); title('filtfilt Hamming window M=5'); axis tight; subplot(122); plot(addwindow1); title('filter Hamming window M=5 '); axis tight; print('-f5', '-djpeg', '-r300', 'fig5'); figure(6); % m2 subplot(121); plot(addwindow2_filt); title('filtfilt Hamming window M=10'); axis tight; subplot(122); plot(addwindow2); title('filter Hamming window M=10 '); axis tight; print('-f6', '-djpeg', '-r300', 'fig6'); figure(7); %m3 subplot(121); plot(addwindow3_filt); title('filtfilt乘上 Hamming window M=15'); axis tight; subplot(122); plot(addwindow3); title('filter 乘上 Hamming window M=15'); axis tight; 加窗Hamming firM1_cut_singal=firM1_SignalData_detrend(120000:160000); n1=length(firM1_cut_singal); addwindow1=(firM1_cut_singal).*hamming(n1); firM1_filt_cut_singal=firM1_filt(120000:160000); n1_filt=length(firM1_filt_cut_singal); addwindow1_filt=(firM1_filt_cut_singal).*hamming(n1_filt); % M1 乘上 Hamming window firM2_cut_singal=firM2_SignalData_detrend(120000:160000); n2=length(firM2_cut_singal); addwindow2=(firM2_cut_singal).*hamming(n2); firM2_filt_cut_singal=firM2_filt(120000:160000); n2_filt=length(firM2_filt_cut_singal); addwindow2_filt=(firM2_filt_cut_singal).*hamming(n2_filt); % M2 乘上 Hamming window firM3_cut_singal=firM3_SignalData_detrend(120000:160000); n3=length(firM3_cut_singal); addwindow3=(firM3_cut_singal).*hamming(n3); firM3_filt_cut_singal=firM3_filt(120000:160000); n3_filt=length(firM3_filt_cut_singal); addwindow3_filt=(firM3_filt_cut_singal).*hamming(n3_filt); % M3 乘上 Hamming window
補零點 強度震幅頻譜 L=131072; fs=11530; % 取樣頻率 t=1/fs; % 取樣週期 m=0:L-1; % 頻率點數 fd=1/(L*t); % 頻率間隔 fy=m.*fd; fy_half = fy(1:(length(fy)/2)); %取一半的FFT fft_addwindow1=fft(addwindow1,L); fft_addwindow1_half=fft_addwindow1(1:(length(fft_addwindow1)/2)); fft_addwindow1_filt=fft(addwindow1_filt,L); fft_addwindow1_filt_half=fft_addwindow1_filt(1:(length(fft_addwindow1_filt)/2)); fft_addwindow2=fft(addwindow2,L); fft_addwindow2_half=fft_addwindow2(1:(length(fft_addwindow2)/2)); fft_addwindow2_filt=fft(addwindow2_filt,L); fft_addwindow2_filt_half=fft_addwindow2_filt(1:(length(fft_addwindow2_filt)/2)); fft_addwindow3=fft(addwindow3,L); fft_addwindow3_half=fft_addwindow3(1:(length(fft_addwindow3)/2)); fft_addwindow3_filt=fft(addwindow3_filt,L); fft_addwindow3_filt_half=fft_addwindow3_filt(1:(length(fft_addwindow3_filt)/2));
subplot(313) plot(fy_half,angle(fft_addwindow1_half),'r-') hold on plot(fy_half,angle(fft_addwindow1_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('相位頻譜') print('-f8', '-djpeg', '-r300', 'fig8'); figure(9) % m2 subplot(311) plot(fy_half,fft_addwindow2_half,'r-'); hold on plot(fy_half,fft_addwindow2_filt_half,'b--'); hold off axis tight; legend('filter','filtfilt',1) title('FFT L=131072 M=10'); figure(8) % m1 subplot(311) plot(fy_half,fft_addwindow1_half,'r-'); hold on plot(fy_half,fft_addwindow1_filt_half,'b--'); hold off axis tight; legend('filter','filtfilt',1) title('FFT L=131072 M=5'); subplot(312) plot(fy_half,abs(fft_addwindow1_half),'r-') hold on plot(fy_half,abs(fft_addwindow1_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('強度頻譜')
subplot(312) plot(fy_half,abs(fft_addwindow3_half),'r-') hold on plot(fy_half,abs(fft_addwindow3_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('強度頻譜') subplot(313) plot(fy_half,angle(fft_addwindow3_half),'r-') hold on plot(fy_half,angle(fft_addwindow3_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('相位頻譜') subplot(312) plot(fy_half,abs(fft_addwindow2_half),'r-') hold on plot(fy_half,abs(fft_addwindow2_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('強度頻譜') subplot(313) plot(fy_half,angle(fft_addwindow2_half),'r-') hold on plot(fy_half,angle(fft_addwindow2_filt_half),'b--'); hold off axis tight legend('filter','filtfilt',1) title('相位頻譜') print('-f9', '-djpeg', '-r300', 'fig9'); figure(10) % m3 subplot(311) plot(fy_half,fft_addwindow3_half,'r-'); hold on plot(fy_half,fft_addwindow3_filt_half,'b--'); hold off axis tight; legend('filter','filtfilt',1) title('FFT L=131072 M=15');