提高题音乐合成信号与系统课程设计报告.docx
- 文档编号:11490705
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:19
- 大小:142.48KB
提高题音乐合成信号与系统课程设计报告.docx
《提高题音乐合成信号与系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《提高题音乐合成信号与系统课程设计报告.docx(19页珍藏版)》请在冰豆网上搜索。
提高题音乐合成信号与系统课程设计报告
课程设计报告
课程名称信号与系统课程设计
指导教师
设计起止日期
学院信息与通信工程
专业电子信息工程
学生
班级/学号
成绩
指导老师签字
1、课程设计目的和要求
目的:
掌握MATLAB的使用方法。
“信号与系统”是一门重要的专业基础课,MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一。
本课程设计基于MATLAB完成信号与系统综合设计实验,以提高学生的综合应用知识能力为目标,是“信号与系统”课程在实践教学环节上的必要补充。
通过课设综合设计实验,激发学生理论课程学习兴趣,提高分析问题和解决问题的能力。
要求:
(1)运用MATLAB编程得到简单信号、简单信号运算、复杂信号的频域响应图;
(2)通过对线性时不变系统的输入、输出信号的时域和频域的分析,了解线性时不变系统的特性,同时加深对信号频谱的理解。
2、课程设计原理
1离散时间信号卷积使用MATLAB中的conv函数
2.在MATLAB中,filter函数的作用是进行数字滤波,其实也就是系统的响应序列求解;y=filter(b,a,x); y=filter(b,a,x)表示向量b和a组成的系统对输入x进行滤波,系统的输出为y。
3.在MATLAB中,zplane函数——绘制系统零极点图
4.在MATLAB中,有专门的frepz()函数来求解。
调用形式为 [h w]=freqz(b,a,,n,fs)其中向量b和a为离散系统的系数,fs为采样频率,n为在区间[0 fs/2]频率围选取的频率点数,f记录频率点数。
由于freqz函数是采用基2的FFT的算法,n常取2的幂次方,以便提高计算速度。
5.MATLAB提供了如abs(),angle()等基本函数用来计算DTFT幅度,相位。
3、课程设计所用设备
(1)个人电脑一台
(2)MATLAB2012设计程序
4、课程设计容和步骤
(1)根据设计题目的要求,熟悉相关容的理论基础,理清程序设计的措施和步骤;
(2)根据设计题目的要求,提出各目标的实施思路、方法和步骤;
(3)根据相关步骤完成MATLAB程序设计,所编程序应能完整实现设计题目的要求;
(4)调试程序,分析相关理论;
(5)编写设计报告。
5、设计过程、实现过程、实现结果
(一)基本部分
(1)信号的时频分析
任意给定单频周期信号的振幅、频率和初相,要求准确计算出其幅度谱,并准确画出时域和频域波形,正确显示时间和频率。
设计思路:
首先给出横坐标,即时间,根据设定的信号的振幅、频率和初相,写出时域波形的表达式;然后对时域波形信号进行傅里叶变化,得到频域波形;最后使用plot函数绘制各个响应图。
源程序:
%基本题1,时频分析,2011010512
clc,clear,closeall
A=4;fc=200;a=0*pi/3;
T=1/fc;
fs=15*fc;Ts=1/fs;
t=0:
Ts:
3*T-Ts;
N=length(t);
x=A*sin(2*pi*fc*t+a);
subplot(211),plot(t,x)
xlabel('t(s)'),ylabel('x(t)'),title('时域波形图')
X=fft(x);XX=fftshift(X);
magX=abs(XX);phaseX=angle(XX);
f=(0:
N-1)*(fs/N)-fs/2;
subplot(223),plot(f,magX)
xlabel('f(Hz)'),ylabel('|X(jw)|'),title('信号幅度谱')
subplot(224),plot(f,phaseX)
xlabel('f(Hz)'),ylabel('angle[X(jw)]'),title('信号相位谱')
结果图:
结果分析:
cos函数波形为周期信号,其频域响应为两个冲击函数,并且符合对偶性。
(2)傅里叶级数分析
分析周期锯齿波的傅里叶级数系数,用正弦信号的线性组合构成锯齿波,要求谐波次数可以任意输入,分析不同谐波次数所构成的锯齿波,解释是否存在吉伯斯现象。
设计思路:
根据原理——任意周期信号都可以表达成傅里叶级数的形式,对周期举行锯齿波进行傅里叶级数分解,利用for循环完成级数求和运算。
当N值较小时,傅里叶级数的逼近效果不是很理想,随着N值变大,傅里叶级数越来越接近理想值。
源程序:
%基本题2,傅里叶级数分析,2011010512
clc;clear;closeall;%初始化工作空间
t=-6:
6/1000:
6;%时间
N=input('pleaseinputthenunber:
');
w0=pi;%角频率
XN=0;
forn=1:
N;
fn=(-1)^(n+1)/(n*pi);
XN=XN+fn*sin(n*w0*t);
end
XN=XN+0.5;%抬升0.5
figure;plot(t,XN);
title(['Gibbs,N=',num2str(N)]);
xlabel('Time(sec)');
ylabel(['X',num2str(N),('t')]);
结果图;
结果分析:
随着N值的增大,傅里叶级数与理想的周期锯齿波越来越接近,符合预期效果。
(3)系统分析
任意给定微分方程或差分方程描述的系统,画出系统的幅频响应和相频响应。
设计思路:
根据微分方程、差分方程与系统函数的对应关系,结合matlab自带的freqs和freqz两个函数,分析系统的幅频特性和相频特性。
源程序:
%基本题3系统分析2011010512
clc,clear,closeall,
%微分方程为r''(t)+6r'(t)+8r(t)=2*e(t)
b=[0,0,2];%系统函数H(s)分子多项式系数
a=[1,6,8];%系统函数H(s)分母多项式系数
[Hw1,w1]=freqs(b,a);%求连续时间系统频率响应
figure
(1)
subplot(2,1,1);zplane(b,a);title('连续时间系统零极点图');
subplot(2,2,3);plot(w1/pi,abs(Hw1))
xlabel('rad/s');ylabel('|H(jw)|');title('连续时间系统幅频响应');
subplot(2,2,4);
plot(w1/pi,angle(Hw1))
xlabel('rad/s');ylabel('Phase');title('连续时间系统相频响应');
%差分方程为y(n)-0.5*y(n-1)+4/5*y(n-2)=3*x(n)-0.6*x(n-1);
b=[3,-0.6];%系统函数H(z)分子多项式系数
a=[1,-0.5,4/5];%系统函数H(z)分母多项式系数
[Hw,w]=freqz(b,a);%求离散时间系统频率响应
figure
(2)
subplot(2,1,1);zplane(b,a);title('离散时间系统零极点图');
subplot(2,2,3);plot(w/pi,abs(Hw))
xlabel('w/pi)');ylabel('|H(e^j^w)|');title('离散时间系统幅频响应');
subplot(2,2,4);plot(w/pi,angle(Hw))
xlabel('w/pi');ylabel('Phase');title('离散时间系统相频响应');
结果图;
结果分析:
所显示零极点等图符合验算结果
(4)音乐合成程序设计
对于任意一小段音乐,利用“十二平均律”计算该音乐中各个乐音的频率,产生并播放这些乐音。
分析音乐的频谱,从中识别出不同的乐音。
设计思路:
根据时间长短来区别各个音符拍长短,根据频率高低来区别各个音符的音调,具体细节参考“十二平均律”,将每段乐音连接起来,使用sound函数播放乐音。
对每段乐音进行傅里叶变换,分析其频谱。
源程序:
%基本题4,音乐合成程序设计,一分钱,2011010512
clc,clear,closeall,
fs=8e3;
freq=[384,512,426.66,512,426.66,320,384,288,320,384,320,384,426.66,512,384,426.66,384,320,384,256,288,320,288,256,288,320,436.66,384,320,384,436.66384,512,426.66,384,320,384,288,384,288,320,256];
N=[1/2,1/2,1/4,1/4,1/2,1/4,1/4,1/4,1/4,1,1/4,1/4,1/4,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1,1/4,1/4,1/4,1/4,1,1/4,1/4,1/4,1/4,1,1/4,1/4,1/4,1/4,1/4,1/4,1/2,1/4,1/4,1/2,1/2]*fs;
D=zeros(1,sum(N));
X=1;
fork=1:
42
D(X:
X+N(k)-1)=(sin(2*pi*freq(k)*(1/fs:
1/fs:
N(k)/fs)));
X=X+N(k);
end;
sound(D,fs);
结果分心:
所听音乐符合预期。
(5)调制
分析单位冲激响应为
的系统的滤波特性,画出其幅频响应曲线。
设计思路:
根据傅里叶变换特性,时域相乘对应频域卷积,将题目中的时域波形进行分解,并将两个函数分别对应的傅里叶变换进行卷积。
参考常用的傅里叶变换对,所求的频域特性为方波和冲击函数的卷积。
源程序:
%基本题5,调制,2011010512
clc,clear,closeall,
fs=300;
t=-10:
1/fs:
10;
N=length(t);
n=[-(N-1)/2:
(N-1)/2];
h=sin(50*pi*t).*sin(100*pi*t)./(pi*t+0.00001);
f1=fft(h);
Fn=fftshift(f1);
f=n/N*fs;
figure
(1)
plot(t,h),
xlabel('t'),ylabel('Amplitude'),title('H(t)');
figure
(2)
plot(f,abs(Fn)),
xlabel('w'),ylabel('Amplitude'),title('Modulation');
结果图;
结果分析:
所得结果符合演算过程,与预期一致。
(二)提高部分
题目1、音乐合成2011010512
设计思路:
通过定义每个音来写乐谱,在加包络谐波,在播放音乐,后画出波形。
源程序
%提高题音乐合成
clear;clc;closeall;
TUNE_BASED=220*[2^(3/12)2^(5/12)2^(7/12)2^(8/12)2^(10/12)2^(12/12)2^(14/12)];%C调
H_TUNE=2*TUNE_BASED;
L_TUNE=0.5*TUNE_BASED;
l_dao=L_TUNE
(1);%将“l_dao”宏定义为低音“1”的频率262Hz
l_re=L_TUNE
(2);%将“l_re”宏定义为低音“2”的频率286Hz
l_mi=L_TUNE(3);%将“l_mi”宏定义为低音“3”的频率311Hz
l_fa=L_TUNE(4);%将“l_fa”宏定义为低音“4”的频率349Hz
l_sao=L_TUNE(5);%将“l_sao”宏定义为低音“5”的频率392Hz
l_la=L_TUNE(6);%将“l_a”宏定义为低音“6”的频率440Hz
l_xi=L_TUNE(7);%将“l_xi”宏定义为低音“7”的频率494Hz
%以下是C调中音的音频宏定义
dao=TUNE_BASED
(1);%将“dao”宏定义为中音“1”的频率523Hz
re=TUNE_BASED
(2);%将“re”宏定义为中音“2”的频率587Hz
mi=TUNE_BASED(3);%将“mi”宏定义为中音“3”的频率659Hz
fa=TUNE_BASED(4);%将“fa”宏定义为中音“4”的频率698Hz
sao=TUNE_BASED(5);%将“sao”宏定义为中音“5”的频率784Hz
la=TUNE_BASED(6);%将“la”宏定义为中音“6”的频率880Hz
xi=TUNE_BASED(7);%将“xi”宏定义为中音“7”的频率523H
%以下是C调高音的音频宏定义
h_dao=H_TUNE
(1);%将“h_dao”宏定义为高音“1”的频率1046Hz
h_re=H_TUNE
(2);%将“h_re”宏定义为高音“2”的频率1174Hz
h_mi=H_TUNE(3);%将“h_mi”宏定义为高音“3”的频率1318Hz
h_fa=H_TUNE(4);%将“h_fa”宏定义为高音“4”的频率1396Hz
h_sao=H_TUNE(5);%将“h_sao”宏定义为高音“5”的频率1567Hz
h_la=H_TUNE(6);%将“h_la”宏定义为高音“6”的频率1760Hz
h_xi=H_TUNE(7);%将“h_xi”宏定义为高音“7”的频率1975Hz
%%简谱欢乐颂
song=[mimifasao...
saofamire...
daodaoremi...
mirere,...
mimifasao...
saofamire...
daodaoremi...
redaodao,...
reremidao...
remifamidao...
remifamire...
daorel_saomi...
mimifasao...
saofamifare...
daodaoremi...
redaodao0];
delay=0.5*[1111,...
1111,...
1111,...
1.50.51,...
1111,...
1111,...
1111,...
1.50.51,...
1111,...
10.50.511,...
10.50.511,...
1111,...
1111,...
1110.50.5,...
1111,...
1.50.511];
%%设置采样精度
fs=8000;
%%生成波形
wav_normal=0;%普通波形
wav_low=0;%低八度波形
wav_hight=0;%高八度的波形
wav_envelope_only=0;%包络的波形
wav_envelope_harmonic=0;%加包络加谐波的波形
m=1;
fori=1:
length(song)
n=1:
fs*delay(i);
temp=sin(2*pi*song(i)*n/fs);%普通
temp_low=sin(pi*song(i)*n/fs);%低八度
temp_highet=sin(4*pi*song(i)*n/fs);%高八度
temp_envelope=exp((-1/4000)*n);%指数衰减包络
temp_harmonic=0.2*sin(4*pi*song(i)*n/fs);%2倍频谐波
wav_normal(m:
m+fs*delay(i)-1)=temp;%正常波形
wav_low(m:
m+fs*delay(i)-1)=temp_low;%低八度波形
wav_hight(m:
m+fs*delay(i)-1)=temp_highet;%高八度波形
wav_envelope_only(m:
m+fs*delay(i)-1)=temp.*temp_envelope;%只加包络波形
wav_harmonic_only(m:
m+fs*delay(i)-1)=temp+temp_harmonic;%只加谐波波形
wav_envelope_harmonic(m:
m+fs*delay(i)-1)=(temp+temp_harmonic).*temp_envelope;%包络谐波波形
m=m+fs*delay(i);
end
%%播放
sound(wav_normal,fs);%播放原始声音
sound(wav_envelope_only,fs);%播放加包络声音
sound(wav_envelope_harmonic,fs);%播放加包络加谐波声音
%%抽取前13个音符(8秒)分析包络与谐波
num_song=13;
length_num_song=fs*sum(delay(1:
num_song));
figure;
subplot(311);
plot((1:
length_num_song)/8000,wav_normal(1:
length_num_song));
xlabel('时间/s');ylabel('幅值');title('普通无包络无谐波波形图');
subplot(312);
plot((1:
length_num_song)/8000,wav_envelope_only(1:
length_num_song));
xlabel('时间/s');ylabel('幅值');title('加包络无谐波波形图');
subplot(313);
plot((1:
length_num_song)/8000,wav_envelope_harmonic(1:
length_num_song));
xlabel('时间/s');ylabel('幅值');title('加包络加谐波波形图');
%%抽取前13个音符(8秒)分析频域谐波效果
normal=abs(fftshift(fft(wav_normal(1:
length_num_song))));%普通频谱图
harmonic=abs(fftshift(fft(wav_harmonic_only(1:
length_num_song))));%加谐波频谱图
fft_rang=(0:
length_num_song-1)/length_num_song*fs-fs/2;%频域围
figure;
subplot(211);
plot(fft_rang,normal);
xlabel('频率/Hz');ylabel('幅值');title('普通音无谐波频谱图');
subplot(212);
plot(fft_rang,harmonic);
xlabel('频率/Hz');ylabel('幅值');title('普通音加谐波频谱图');
figure;
%%抽取前13个音符(8秒)分析频域的高八度低八度效果
hight=abs(fftshift(fft(wav_hight(1:
length_num_song))));%高八度频谱图
low=abs(fftshift(fft(wav_low(1:
length_num_song))));%低八度频谱图
subplot(311);
plot(fft_rang,normal);
xlabel('频率/Hz');ylabel('幅值');title('普通音频谱图');
subplot(312);
plot(fft_rang,low);
xlabel('频率/Hz');ylabel('幅值');title('低八度音频谱图');
subplot(313);
plot(fft_rang,hight);
xlabel('频率/Hz');ylabel('幅值');title('高八度音频谱图');
结果分析:
与预期一致听到音乐也和预期一致。
6、设计总结
通过这次试验,我明白了学到的知识只有会用才有价值,只有在应用中才能找到自己的不足并加以弥补,如果我们不去将知识应用,那我们学的东西将失去价值。
在设计过程中,自己学会了Matlab软件的部分功能,在今后的生活中我希望能够学到更多!
在设计工程中我遇到了很多困难,但是我坚持作了下来,这对我来说是一次磨练,令我更加坚强。
在今后的生活中,当我们遇到困难我们不应该轻言放弃而是应该坚持,努力实现自己的目标。
参考文献
[1]君里、应启珩、为理,信号与系统引论,:
高等教育,2009年3月.
[2]谷源涛、应启珩、君里,信号与系统——MATLAB综合实验,:
高等教育,2008年1月.
[3]梁虹等,信号与系统分析与Matlab实现,:
电子工业,2002年2月.
[4]《信号分析和处理MATLAB语言与应用》国防科技大学黄文梅勇2000年
附录
MATLAB程序清单:
basic1.m
basic2.m
basic3.m
basic4.m
basic5.m
enhanced7.m
辅助文件:
msg.wav
sys.wav
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 提高 音乐 合成 信号 系统 课程设计 报告