信号与系统课程设计报告

时间:2024.4.5

                                          评分:

信号与系统课程设计

             学院:电信学院

班级:测控10-2

姓名:苏慧敏

学号:10034010206

指导教师:贺婷

设计日期:20##-6-18----20##-6-22

                      利用matlab合成音乐

一、实验目的

1. 熟悉MATLAB的软件和语言指令的使用;

2. 学习利用MATLAB进行连续信号的时域、频域分析;

3. 熟悉抽样信号与连续信号的区别。

二、实验内容

1.请根据《画心》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1抽样频率为8kHz 的正弦信号表示这些乐音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐音信号拼出《画心》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?并用图显示生成的音乐信号。

程序:

A=[440 349.23 349.23 329.63  293.66  329.63 329.63 440  349.23   349.23  349.23  440  349.23  349.23  329.63 293.66 349.23 440 246.94 349.23 349.23 349.23 440 349.23]; 

fs=8000;          

pu=[5 3  3 2 1 2 2 5 3 3 3 5 3  3 2 1 3 5 6  3 3 3 5 3

 ];

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p  p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];

N=length(pu);

f=zeros(1,N);

for i=1:N

f(i)=A(pu(i));                 ÷

end

point=fs*last_time;          

total_point=sum(point);         

store=zeros(1,total_point);  

m=1;

for num=1:N                 

    t=1/fs:1/fs:point(num)/fs;     

    store(m:m+point(num)-1)=sin(2*pi*f(num)*t);

    m=m+point(num);        

end

sound(store,8000);   

plot(store);  

      

运行结果:

第一幅图.png

2、乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了消除它,使用包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。

程序:

A=[440 349.23 349.23 329.63  293.66  329.63 329.63 440  349.23   349.23  349.23  440  349.23  349.23  329.63 293.66 349.23 440 246.94 349.23 349.23 349.23 440 349.23 ];

fs=8000;                                       

pu=[ 5 3  3 2 1 2 2 5 3 3 3 5 3  3 2 1 3 5 6  3 3 3 5 3 ];

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p  p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];

N=length(pu);

f=zeros(1,N);

for i=1:N

f(i)=A(pu(i));            

end

point=fs*last_time;          

total_point=sum(point);     

store=zeros(1,total_point);   

m=1;

for num=1:N                

    t=1/fs:1/fs:point(num)/fs;    

    baoluo=zeros(1,point(num));             

    for j=1:point(num)

       if (j<0.2*point(num))

            y=7.5*j/point(num);

       else

           if (j<0.333*point(num))

               y=-15/4*j/point(num)+9/4;

           else

               if (j<0.666*point(num))

                   y=1;

               else

                   y=-3*j/point(num)+3;

               end 

           end

       end 

       baoluo(j)=y;

    end

    store(m:m+point(num)-1)=sin(2*pi*f(num)*t).*baoluo(1:point(num)); 

    m=m+point(num);        

end

sound(store,8000);   

plot(store);

包络的图像.png

3、用最简单的方法将2中的音乐分别升高和降低一个八度。通过提高采样频率一倍可以升高一个八度,降低采样频率为原来的一半可以降低一个八度。并将合成音乐信号显示出来。

升高一个八度的程序:

A=[440 349.23 349.23 329.63  293.66  329.63 329.63 440  349.23   349.23  349.23  440  349.23  349.23  329.63 293.66 349.23 440 246.94 349.23 349.23 349.23 440 349.23 ];

fs=8000;                                       

 pu=[ 5 3  3 2 1 2 2 5 3 3 3 5 3  3 2 1 3 5 6  3 3 3 5 3 ];

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p  p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];

N=length(pu);

f=zeros(1,N);

for i=1:N

f(i)=A(pu(i))*2;              

end

point=fs*last_time;          

total_point=sum(point);      

store=zeros(1,total_point);   

m=1;

for num=1:N                  

t=1/fs:1/fs:point(num)/fs;     

    baoluo=zeros(1,point(num));                 

    for j=1:point(num)

       if (j<0.2*point(num))

            y=7.5*j/point(num);

       else

           if (j<0.333*point(num))

               y=-15/4*j/point(num)+9/4;

           else

               if (j<0.666*point(num))

                   y=1;

               else

                   y=-3*j/point(num)+3;

               end 

           end

       end 

       baoluo(j)=y;

    end

    store(m:m+point(num)-1)=sin(2*pi*f(num)*t).*baoluo(1:point(num));  m=m+point(num);        

end

sound(store,8000);    

plot(store);

声调升高图像.png

降低一个八度的程序:

A=[440 349.23 349.23 329.63  293.66  329.63 329.63 440  349.23   349.23  349.23  440  349.23  349.23  329.63 293.66 349.23 440 246.94 349.23 349.23 349.23 440 349.23 ]; fs=8000;                                        

pu=[ 5 3  3 2 1 2 2 5 3 3 3 5 3  3 2 1 3 5 6  3 3 3 5 3 ];

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p  p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];

N=length(pu);

f=zeros(1,N);

for i=1:N

f(i)=A(pu(i))/2;              

end

point=fs*last_time;        

total_point=sum(point);     

store=zeros(1,total_point);   

m=1;

for num=1:N                      

t=1/fs:1/fs:point(num)/fs;        

 baoluo=zeros(1,point(num));                    

for j=1:point(num)

       if (j<0.2*point(num))

            y=7.5*j/point(num);

       else

           if (j<0.333*point(num))

               y=-15/4*j/point(num)+9/4;

           else

               if (j<0.666*point(num))

                   y=1;

               else

                   y=-3*j/point(num)+3;

               end 

           end

       end 

       baoluo(j)=y;

    end

    store(m:m+point(num)-1)=sin(2*pi*f(num)*t).*baoluo(1:point(num));   m=m+point(num);        

end

sound(store,8000);     

plot(store);

声调降低图像.png

4、试着在(2) 的音乐中增加一些谐波分量,听一听音乐是否更有“厚度”了?注意谐波分量的能量要小,否则掩盖住基音反而听不清音调了。如果选择基波幅度为1 ,二次谐波幅度0.2,三次谐波幅度0.3。

A=[440 349.23 349.23 329.63  293.66  329.63 329.63 440  349.23   349.23  349.23  440  349.23  349.23  329.63 293.66 349.23 440 246.94 349.23 349.23 349.23 440 349.23 ];

 fs=8000;                                        

pu=[ 5 3  3 2 1 2 2 5 3 3 3 5 3  3 2 1 3 5 6  3 3 3 5 3 ];

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2  p  p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];

N=length(pu);

f=zeros(1,N);

B=A-5;

for i=1:N

f(i)=B(pu(i));             

end

point=fs*last_time;          

total_point=sum(point);     

 store=zeros(1,total_point);   

m=1;

for num=1:N                      

 t=1/fs:1/fs:point(num)/fs;         

baoluo=zeros(1,point(num));                   

 for j=1:point(num)

       if (j<0.2*point(num))

            y=7.5*j/point(num);

       else

           if (j<0.333*point(num))

               y=-15/4*j/point(num)+9/4;

           else

               if (j<0.666*point(num))

                   y=1;

               else

                   y=-3*j/point(num)+3;

               end 

           end

       end 

       baoluo(j)=y;

    end

h=[1 0.2 0.3 0.1];  

    xiebo=zeros(1,length(t));

    for i=1:length(m)

        xiebo=xiebo+h(i)*sin(2*i*pi*f(num)*t);    

    end

    store(m:m+point(num)-1)=xiebo.*baoluo(1:point(num));      m=m+point(num);        

end

   

sound(store,8000);     

plot(store);

加谐波的图像.png

5、自选其他音乐合成,并试着采用别的音乐包络和通过加入谐波的不同,看看效果有什么不同。

A=[440 440 349.23 493.88 440 349.23 349.23 349.23 349.23 329.63 293.66 293.66 293.66 587.33 587.33 587.33 587.33 493.88 493.88 349.23 493.88 440 440 440 493.88 587.33 493.88 587.33 587.33 493.88 440 440 440 349.23 329.63 293.66 220 349.23 329.63 329.63 329.63 329.63 293.66 293.66 246.94];  fs=8000;                                        

pu=[5 5 3   6 5 3 3 3 3 2 1 1 1 1 1 1 1 6 6 3  6 5 5 5 5  6 1 6 1 6  5 5 5 3 2 1 5  3 2 2 2 2 1 1 6];   

p=0.5;

last_time=[p/2 p/2 p/2 p/2 p p/2 p/2 p p p p/2 p/2 p p p/2 p/2 p/2 p/2 p p p p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p p ];

 N=length(pu);

f=zeros(1,N);

for i=1:N

f(i)=A(pu(i));              

end

point=fs*last_time;          

total_point=sum(point);      store=zeros(1,total_point);  

m=1;

for num=1:N                      

t=1/fs:1/fs:point(num)/fs;        

baoluo=zeros(1,point(num));                    

for j=1:point(num)

       if (j<0.2*point(num))

            y=7.5*j/point(num);

       else

           if (j<0.333*point(num))

               y=-15/4*j/point(num)+9/4;

           else

               if (j<0.666*point(num))

                   y=1;

               else

                   y=-3*j/point(num)+3;

               end 

           end

       end 

       baoluo(j)=y;

    end

     h=[1 0.2 0.3 0.1];  

    xiebo=zeros(1,length(t));

    for i=1:length(m)

        xiebo=xiebo+h(i)*sin(2*i*pi*f(num)*t);    

    end

    store(m:m+point(num)-1)=sin(2*pi*f(num)*t).*baoluo(1:point(num)); m=m+point(num);         

end

sound(store,8000);     

plot(store);

14的图像.png

信号课程设计心得体会:

更多相关推荐:
南邮信号与系统课程实验报告

课程实验报告20xx20xx学年第一学期实验名称用Matlab进行信号与系统的时频域分析专业学生姓名班级学号指导教师指导单位日期用Matlab进行信号与系统的时频域分析一实验目的1学会matlab的简单使用2学...

信号与系统课程设计报告

信号与系统课程设计报告基于IIR的有噪声语音信号处理班姓名成绩指导教师日期目录1摘要及关键字22实验目的与具体任务33MATLAB设计与运行结果及分析431基于IIR滤波器的语音信号的处理4311语音信号的采集...

信号与系统课程设计报告

沈阳理工大学课程设计专用纸成绩评定表沈阳理工大学沈阳理工大学课程设计专用纸课程设计任务书2沈阳理工大学沈阳理工大学课程设计专用纸摘要本文研究的是傅里叶变换的对称性和时移特性傅里叶变换的性质有对称性线性叠加性奇偶...

信号与线性系统课程设计报告

信号与线性系统课程设计报告课题五基于FIR滤波的语音信号处理系统设计班级姓名学号组号及同组人成绩1指导教师日期课题五基于FIR滤波的语音信号处理系统设计摘要MATLAB是由美国mathworks公司发布的主要面...

信号与系统课设报告模版

课程设计报告课程名称信号与系统课程设计指导教师罗倩设计起止日期20xx623至20xx73学院信息与通信工程专业电子信息工程学生姓名班级学号成绩指导老师签字1目录1课程设计目的32课程设计原理33课程设计所用设...

信号与系统课设报告

一课程设计目的信号与系统是一门重要的专业基础课MATLAB作为信号处理强有力的计算和分析工具是电子信息工程技术人员常用的重要工具之一本课程设计基于MATLAB完成信号与系统综合设计实验以提高学生的综合应用知识能...

信号与系统课程设计报告--循环卷积和离散卷积的计算机计算

信号与系统课程设计报告学院电气与电子工程学院班级电气1010学号U20xx120xx姓名周超尘1目录一设计概述1设计题目32设计目的33具体步骤34实现方法4二设计目标4三设计内容1原理学习411循环卷积512...

沈阳理工大学信号与系统课程设计 傅里叶变换的对称性和时移特性

沈阳理工大学课程设计成绩评定表1沈阳理工大学沈阳理工大学课程设计课程设计任务书2沈阳理工大学沈阳理工大学课程设计摘要本文研究的是傅里叶变换的对称性和时移特性傅里叶变换的性质有对称性线性叠加性奇偶虚实性尺度变换特...

课题三基于LABVIEW的心电信号分析系统设计与仿真报告

信号与系统课程设计课题一心电信号分析系统的设计一本课题的目的本设计课题主要研究数字心电信号的初步分析方法及滤波器的应用通过完成本课题的设计拟主要达到以下几个目的1了解基于LabVIEW的虚拟仪器的特点和使用方法...

信号与线性系统课程设计报告

信号与线性系统课程设计报告课题名称数字语音信号分析系统设计班级姓名学号成绩指导教师王霞日期20xx1227摘要数字信号处理在实际生活生产中具有广泛应用优点包括灵活性高稳定性可靠性集成度高等同时该方法在各学科领域...

信号与系统-课程设计报告(华科电气95分报告)

信号与系统课程设计报告学院电气与电子工程学院班级学号姓名1目录一设计概述1设计题目32设计目的33具体步骤34实现方法4二设计目标4三设计内容1原理学习411循环卷积512离散卷积52程序流程图63c语言编程与...

沈阳理工大学信号与系统课程设计 傅里叶变换的时域卷积和时域微分特性

成绩评定表键入文字课程设计任务书键入文字摘要本文研究的是傅里叶变换的时域卷积和时域微分特性傅里叶变换的性质对称性线性叠加性奇偶虚实性尺度变换特性时移特性频移特性微分特性积分特性卷积特性时域和频域从信号与系统的角...

信号与系统课程设计报告(24篇)