1. 程式人生 > >中科之旅------matlab生成wav檔案和解析wav檔案

中科之旅------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(' 濾波後訊號頻譜圖 '); % 加標題

結果