實驗 9 音頻信號采集及處理
- 代碼剖析
- 聲音回放
- 顯示音頻時域波形
- 顯示音頻頻域波形
- 聲音主要頻率1
- 聲音主要頻率2
- 合成聲音播放
- 播放加噪信號
- 加噪之后的時域和頻譜圖
- 顯示低通濾波器特性
- 播放濾波后的聲音
- 濾波后的時域和頻譜圖
- 關閉所有figure
- 鳴謝
- GUI代碼
- 代碼及ding.wav下載
代碼剖析
聲音回放
[voice,fs]=audioread('ding.wav');
sound(voice,fs); %聲音回放
顯示音頻時域波形
figure(1);
[voice,fs]=audioread('ding.wav');
plot(voice); %繪出時域波
xlabel('t'); ylabel('A'); %坐標名稱
title(' 初始音頻信號時域波形 ','FontName','宋體');
grid on;
顯示音頻頻域波形
figure(2);
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
voice1=fft(voice,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title(' 初始音頻信號頻域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
聲音主要頻率1
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N %最高峰值點頻率
y1 = (Y1/(Y1+Y2))*cos(2*pi*f1*t); %第一個頻率信號
figure(9);
plot( t,y1 ); %繪制原信號時域波形
axis( [T len_signal*T -0.08 0.08] ); %限定顯示范圍
title( '分解信號時域波形圖1' ,'FontName','宋體'); %繪制標題
xlabel('時間(s)','FontName','宋體'); ylabel('幅值','FontName','宋體');
聲音主要頻率2
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N; %最高峰值點頻率
f2 = (n2-1)*fs/fft_N %第二高峰值點頻率
y2 = (Y2/(Y1+Y2))*cos(2*pi*f2*t); %第二個頻率信號
figure(8)
plot( t,y2 ); %繪制原信號時域波形
axis( [T len_signal*T -0.08 0.08] ); %限定顯示范圍
title( '分解信號時域波形圖2' ,'FontName','宋體'); %繪制標題
xlabel('時間(s)','FontName','宋體'); ylabel('幅值','FontName','宋體');
合成聲音播放
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N; %最高峰值點頻率
f2 = (n2-1)*fs/fft_N; %第二高峰值點頻率
y1 = (Y1/(Y1+Y2))*cos(2*pi*f1*t); %第一個頻率信號
y2 = (Y2/(Y1+Y2))*cos(2*pi*f2*t); %第二個頻率信號
A = max( signal ); %原信號的最大幅度
hecheng = (y1+y2)/max( y1+y2 ); %合成信號歸一化
sound( hecheng,fs ); %合成音頻信號播放
播放加噪信號
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
sound(s,fs); %播放加噪的語音
加噪之后的時域和頻譜圖
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
figure(3);
n=length(s); %計算長度
voice1=fft(s,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title(' 加噪音頻信號頻域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
figure(6);
plot(s); %繪出原始音頻信號頻譜
title(' 加噪音頻信號時域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
顯示低通濾波器特性
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
figure(4);
plot(w*fs/(2*pi),abs(h)); %繪制 IIR 低通濾波器特性曲線
title('IIR 低通濾波器特性曲線 ','FontName','宋體');
grid on;
xlabel('f/Hz');ylabel(' 幅度')
播放濾波后的聲音
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
z=filter(bz,az,s); %濾波
sound(z,fs); %播放加噪的語音
濾波后的時域和頻譜圖
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
figure(5);
z=filter(bz,az,s); %濾波
figure(5);
n=length(z); %計算長度
voice1=fft(z,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title('濾波后音頻信號頻域波形','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
figure(7);
plot(z); %繪出原始音頻信號頻譜
title(' 濾波后音頻信號時域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
關閉所有figure
clc;
close all;
鳴謝
感謝我的朋友趙思文軒、陳勇輝為我提供的想法和代碼支持
GUI代碼
classdef mydsp < matlab.apps.AppBase
% Properties that correspond to app components
properties (Access = public)
UIFigure matlab.ui.Figure
dingwavButton matlab.ui.control.Button
Button_4 matlab.ui.control.Button
Button_5 matlab.ui.control.Button
Button_7 matlab.ui.control.Button
Button_8 matlab.ui.control.Button
Button_9 matlab.ui.control.Button
Button_10 matlab.ui.control.Button
Button_11 matlab.ui.control.Button
figureButton matlab.ui.control.Button
Button_12 matlab.ui.control.Button
Button_13 matlab.ui.control.Button
Button_14 matlab.ui.control.Button
end
properties (Access = public)
% Description
end
% Callbacks that handle component events
methods (Access = private)
% Callback function
function ButtonPushed(app, event)
clc;
close all;
global R;
R= audiorecorder( 44100, 16 ,1);
record(R)
R
end
% Callback function
function Button_2Pushed(app, event)
global R;
pause(R);
R
end
% Button pushed function: dingwavButton
function dingwavButtonPushed(app, event)
[voice,fs]=audioread('ding.wav');
sound(voice,fs); %聲音回放
end
% Button pushed function: Button_4
function Button_4Pushed(app, event)
figure(1);
[voice,fs]=audioread('ding.wav');
plot(voice); %繪出時域波
xlabel('t'); ylabel('A'); %坐標名稱
title(' 初始音頻信號時域波形 ','FontName','宋體');
grid on;
end
% Button pushed function: Button_5
function Button_5Pushed(app, event)
figure(2);
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
voice1=fft(voice,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title(' 初始音頻信號頻域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
end
% Callback function
function Button_6Pushed(app, event)
wp=2*pi*20000;ws=2*pi*24000;Rp=0.1;As=60;
[N,wc]=buttord(wp,ws,Rp,As,'s');
[B,A]=butter(N,wc,'s');
[voice,fs]=audioread('ding.wav');
% n=length(voice); %計算長度
% voice1=filter(B,A,voice);
% voice2=fft(voice1,n);%快速傅里葉變換
% plot(abs(voice2)); %繪出原始音頻信號頻譜
end
% Button pushed function: Button_7
function Button_7Pushed(app, event)
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
sound(s,fs); %播放加噪的語音
end
% Button pushed function: Button_8
function Button_8Pushed(app, event)
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
figure(3);
n=length(s); %計算長度
voice1=fft(s,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title(' 加噪音頻信號頻域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
figure(6);
plot(s); %繪出原始音頻信號頻譜
title(' 加噪音頻信號時域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
end
% Button pushed function: Button_9
function Button_9Pushed(app, event)
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
figure(4);
plot(w*fs/(2*pi),abs(h)); %繪制 IIR 低通濾波器特性曲線
title('IIR 低通濾波器特性曲線 ','FontName','宋體');
grid on;
xlabel('f/Hz');ylabel(' 幅度')
end
% Button pushed function: Button_10
function Button_10Pushed(app, event)
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
z=filter(bz,az,s); %濾波
sound(z,fs); %播放加噪的語音
end
% Button pushed function: Button_11
function Button_11Pushed(app, event)
[voice,fs]=audioread('ding.wav');
n=length(voice); %計算長度
t=0:1/fs:(n-1)/fs;
noise=0.03*sin(2*pi*100000*t'); %100kHz 正弦波噪聲
s=voice+noise; %加噪后的音頻信號
rp=0.1; %通帶最大衰減
rs=60; %阻帶最小衰減
Ft=1000;
Fp=60; %通帶截止頻率fp
Fs=100; %阻帶截止頻率fs
wp=2*pi*Fp/Ft;%WP是通帶截止頻率
ws=2*pi*Fs/Ft; %WS是阻帶截止頻率
[n,wn]=ellipord(wp,ws,rp,rs,'s');% 呼叫 ellipod 計算橢圓 DF階數 N和通帶截止頻率 wp,
[bz,az]=ellip(n,rp,rs,wn);% 呼叫 ellip 計算橢圓帶通 DF系統函式系數向量B和 A
[h,w]=freqz(bz,az);
figure(5);
z=filter(bz,az,s); %濾波
figure(5);
n=length(z); %計算長度
voice1=fft(z,n);%快速傅里葉變換
plot(abs(voice1)); %繪出原始音頻信號頻譜
title('濾波后音頻信號頻域波形','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
figure(7);
plot(z); %繪出原始音頻信號頻譜
title(' 濾波后音頻信號時域波形 ','FontName','宋體');
xlabel('f'); ylabel('A');
grid on;
end
% Button pushed function: figureButton
function figureButtonPushed(app, event)
clc;
close all;
end
% Button pushed function: Button_12
function Button_12Pushed(app, event)
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N %最高峰值點頻率
y1 = (Y1/(Y1+Y2))*cos(2*pi*f1*t); %第一個頻率信號
figure(9);
plot( t,y1 ); %繪制原信號時域波形
axis( [T len_signal*T -0.08 0.08] ); %限定顯示范圍
title( '分解信號時域波形圖1' ,'FontName','宋體'); %繪制標題
xlabel('時間(s)','FontName','宋體'); ylabel('幅值','FontName','宋體'); %繪制橫縱坐標的標簽
end
% Button pushed function: Button_14
function Button_14Pushed(app, event)
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N; %最高峰值點頻率
f2 = (n2-1)*fs/fft_N; %第二高峰值點頻率
y1 = (Y1/(Y1+Y2))*cos(2*pi*f1*t); %第一個頻率信號
y2 = (Y2/(Y1+Y2))*cos(2*pi*f2*t); %第二個頻率信號
A = max( signal ); %原信號的最大幅度
hecheng = (y1+y2)/max( y1+y2 ); %合成信號歸一化
sound( hecheng,fs ); %合成音頻信號播放
end
% Button pushed function: Button_13
function Button_13Pushed(app, event)
[signal,fs] = audioread('ding.wav' );
len_signal = length( signal ); %信號的長度
T = 1/fs; %采樣周期
t = T:T:len_signal/fs; %時間t序列
fft_N = 2^nextpow2( len_signal ); %計算fft變換的點數
SIGNAL = fft( signal,fft_N ); %快速傅里葉變換
SIGNAL_AMP = abs( SIGNAL ); %只做幅頻分析,對fft變換后序列取模
SIGNAL_AMP_HALF = SIGNAL_AMP(1:(fft_N/2));%由于對稱性,只取前一半
[SIGNAL_pks,locs] = findpeaks( SIGNAL_AMP_HALF ); %尋找頻譜峰值點
sort_pks = sort( SIGNAL_pks,'descend' ); %對頻譜峰值點進行排序
sort_loc = find( SIGNAL_pks>=sort_pks(2) ); %找到峰值最大的2個點排序后在pks中的位置
n1 = locs( sort_loc(1) ); %最高峰值點在序列中的位置
n2 = locs( sort_loc(2) ); %第二高峰值點在序列中的位置
Y1 = SIGNAL_AMP_HALF(n1); %最高峰值點在頻譜中的幅度
Y2 = SIGNAL_AMP_HALF(n2); %第二高峰值點在頻譜中的幅度
f1 = (n1-1)*fs/fft_N; %最高峰值點頻率
f2 = (n2-1)*fs/fft_N %第二高峰值點頻率
y2 = (Y2/(Y1+Y2))*cos(2*pi*f2*t); %第二個頻率信號
figure(8)
plot( t,y2 ); %繪制原信號時域波形
axis( [T len_signal*T -0.08 0.08] ); %限定顯示范圍
title( '分解信號時域波形圖2' ,'FontName','宋體'); %繪制標題
xlabel('時間(s)','FontName','宋體'); ylabel('幅值','FontName','宋體');
end
end
% Component initialization
methods (Access = private)
% Create UIFigure and components
function createComponents(app)
% Create UIFigure and hide until all components are created
app.UIFigure = uifigure('Visible', 'off');
app.UIFigure.Position = [100 100 640 480];
app.UIFigure.Name = 'UI Figure';
% Create dingwavButton
app.dingwavButton = uibutton(app.UIFigure, 'push');
app.dingwavButton.ButtonPushedFcn = createCallbackFcn(app, @dingwavButtonPushed, true);
app.dingwavButton.Position = [76 430 100 24];
app.dingwavButton.Text = '播放ding.wav';
% Create Button_4
app.Button_4 = uibutton(app.UIFigure, 'push');
app.Button_4.ButtonPushedFcn = createCallbackFcn(app, @Button_4Pushed, true);
app.Button_4.Position = [76 374 135 24];
app.Button_4.Text = '顯示音頻時域波形';
% Create Button_5
app.Button_5 = uibutton(app.UIFigure, 'push');
app.Button_5.ButtonPushedFcn = createCallbackFcn(app, @Button_5Pushed, true);
app.Button_5.Position = [243 373 123 25];
app.Button_5.Text = '顯示音頻頻域波形';
% Create Button_7
app.Button_7 = uibutton(app.UIFigure, 'push');
app.Button_7.ButtonPushedFcn = createCallbackFcn(app, @Button_7Pushed, true);
app.Button_7.Position = [76 229 100 24];
app.Button_7.Text = '播放加噪信號';
% Create Button_8
app.Button_8 = uibutton(app.UIFigure, 'push');
app.Button_8.ButtonPushedFcn = createCallbackFcn(app, @Button_8Pushed, true);
app.Button_8.Position = [231 229 147 24];
app.Button_8.Text = '加噪之后的時域和頻譜圖';
% Create Button_9
app.Button_9 = uibutton(app.UIFigure, 'push');
app.Button_9.ButtonPushedFcn = createCallbackFcn(app, @Button_9Pushed, true);
app.Button_9.Position = [76 179 123 24];
app.Button_9.Text = '顯示低通濾波器特性';
% Create Button_10
app.Button_10 = uibutton(app.UIFigure, 'push');
app.Button_10.ButtonPushedFcn = createCallbackFcn(app, @Button_10Pushed, true);
app.Button_10.Position = [249 179 111 24];
app.Button_10.Text = '播放濾波后的聲音';
% Create Button_11
app.Button_11 = uibutton(app.UIFigure, 'push');
app.Button_11.ButtonPushedFcn = createCallbackFcn(app, @Button_11Pushed, true);
app.Button_11.Position = [400 179 135 24];
app.Button_11.Text = '濾波后的時域和頻譜圖';
% Create figureButton
app.figureButton = uibutton(app.UIFigure, 'push');
app.figureButton.ButtonPushedFcn = createCallbackFcn(app, @figureButtonPushed, true);
app.figureButton.Position = [260 96 100 24];
app.figureButton.Text = '關閉所有figure';
% Create Button_12
app.Button_12 = uibutton(app.UIFigure, 'push');
app.Button_12.ButtonPushedFcn = createCallbackFcn(app, @Button_12Pushed, true);
app.Button_12.Position = [76 291 119 26];
app.Button_12.Text = '聲音主要頻率1';
% Create Button_13
app.Button_13 = uibutton(app.UIFigure, 'push');
app.Button_13.ButtonPushedFcn = createCallbackFcn(app, @Button_13Pushed, true);
app.Button_13.Position = [241 291 119 26];
app.Button_13.Text = '聲音主要頻率2';
% Create Button_14
app.Button_14 = uibutton(app.UIFigure, 'push');
app.Button_14.ButtonPushedFcn = createCallbackFcn(app, @Button_14Pushed, true);
app.Button_14.Position = [400 291 100 26];
app.Button_14.Text = '合成聲音播放';
% Show the figure after all components are created
app.UIFigure.Visible = 'on';
end
end
% App creation and deletion
methods (Access = public)
% Construct app
function app = mydsp
% Create UIFigure and components
createComponents(app)
% Register the app with App Designer
registerApp(app, app.UIFigure)
if nargout == 0
clear app
end
end
% Code that executes before app deletion
function delete(app)
% Delete UIFigure when app is deleted
delete(app.UIFigure)
end
end
end
代碼及ding.wav下載
鏈接:https://pan.baidu.com/s/1UMIm8A_ThtiTailmHmYnSg
提取碼:6666
復制這段內容后打開百度網盤手機App,操作更方便哦
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243942.html
標籤:其他
上一篇:2020我與csdn的相遇
