中科之旅------matlab生成wav檔案和解析wav檔案
生成wav:
% 生成時間序列 fs = 5000; % [Hz] 訊號取樣頻率 T = 1; % [s] 訊號長度 x = 0:1/fs:T; % [s] 時間序列 % 生成訊號序列 f = 440; % [Hz] 訊號頻率 y = 1*sin(2*pi*f*x)+sin(2*pi*4*f*x); % 輸出音訊檔案 fname = 'Asin3.wav'; % 設定檔名稱 注意格式 audiowrite(fname,y,fs); % 輸出檔案
解析wav
[X,FS]=audioread('Asin3.WAV'); % 將 WAV 檔案轉換成變數
%利用 FDATool 設計一個 LowpassButterworth 濾波器
%指標 FS=22050Hz Fp=1000Hz Ap=1dB Fs=3000Hz As=20dB
B =[0.0062,0.0187,0.0187,0.0062]; % 分子係數
A =[1,-2.1706,1.6517,-0.4312]; % 分母系數
Y=filter(B,A,X); % 實現數字濾波
t=(0:length(X)-1)/FS; % 計算資料時刻
subplot(2,2,1);plot(t,X); % 繪製原波形圖
title(' 原訊號波形圖 '); % 加標題
subplot(2,2,3);plot(t,Y); % 繪製濾波波形圖
title(' 濾波後波形圖 '); % 加標題
xf=fft(X); % 作傅立葉變換求原頻譜
yf=fft(Y); % 作傅立葉變換求濾波後頻譜
fm=3000*length(xf)/FS; % 確定繪頻譜圖的上限頻率
f=(0:fm)*FS/length(xf); % 確定繪頻譜圖的頻率刻度
subplot(2,2,2);plot(f,abs(xf(1:length(f)))); % 繪製原波形頻譜圖
title(' 原訊號頻譜圖 '); % 加標題
subplot(2,2,4);plot(f,abs(yf(1:length(f)))); % 繪製濾波後頻譜圖
title(' 濾波後訊號頻譜圖 '); % 加標題
結果