首页/文章/ 详情

劳动教育v2(3)

1年前浏览1584

公布大家要编写的代码!很早就准备好了哦!看看编好后能有什么效果?声明:本代码来源于网络,本人只做教学使用,并无抄袭之意。如果侵权,请及时和我联系,我会及时处理!现代大学生学习技能应该采取有啥学啥的态度,不要再去挑了,到了社会上你会发现技多不压身的道理。当然也需要有所侧重,比如软件是强项,但是硬件也要了解。只要有了足够多的技能,就不会有精神内耗,才不会恐慌,才不会有胆怯!人呢?做事要有信念,做任何事情都不会畏缩,这样终会学成!

2022年8月29日,新学期的课开始了。新的一个学期就这么如期而至,又是如往常的激动和无奈。在过去的暑假中,见证了高考结束后家长和考生的喜与悲,而上学后,当初的那些誓言是不是会被抛在脑后?躺平的思想是不是不自觉的涌入脑中?失败和成功之后都需要调整心态,因为人的一生中会遇到太多这样的事情。保持好的心态,不断坚持做有意义的事情,你终将获得成功!

2023年8月,在家给即将升入大二的学生们讲课。既有实际编程知识,也有专业发展知识。在暑假里学习,大家会感到更加充实,心无杂念,这也为他们日后参加各种竞赛打下坚实基础!


主程序代码!

让音乐的美感染你的精神世界!

clear, clc

t = [ 56 55   56 55 56 51 54 52   49 0 40 44 49   51 0 44 48 51   52 0 44 56 55 ...

      56 55 56 51 54 52   49 0 40 44 49   51 0 44 52 51   49 0 51 52 54   56 47 57 56 ...

      54 45 56 54   52 44 54 52   51 0 44 56 0   0 56 68 0 0 55   56 0 0 55 56 55 ...

      56 55 56 51 54 52   49 0 40 44 49   51 0 44 48 51   52 0 44 56 55   56 55 56 51 54 52 ...

      49 0 40 44 49   51 0 44 52 51   49];


tdur = [ .5 .5   .5 .5 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5 ...

         .5 .5 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5   1.5 .5 .5 .5 ...

        1.5 .5 .5 .5   1.5 .5 .5 .5   1 .5 .5 .5 .5  .5 .5 .5 .5 .5 .5   .5 .5 .5 .5 .5 .5 ...

         .5 .5 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5   1 .5 .5 .5 .5   .5 .5 .5 .5 .5 .5 ...

         1 .5 .5 .5 .5   1 .5 .5 .5 .5   2];


b = [ 0   0   25 32 37 0 0   20 32 36 0 0   25 32 39 0 0 ...

      0   25 32 37 0 0   20 32 36 0 0   25 32 37 0   28 35 40 0 0 ...

      23 35 39 0 0   25 32 37 0 0   20 32 44 0 44   56 0 0 55 56 0   0 55 56 0 0 ...

      0   25 32 37 0 0   20 32 36 0 0   25 32 37 0 0   0 ...

      25 32 37 0 0   20 32 36 0 0   25 32 37 0];


bdur = [ 1   3   .5 .5 .5 .5 1   .5 .5 .5 .5 1   .5 .5 .5 .5 1 ...

         3   .5 .5 .5 .5 1   .5 .5 .5 .5 1   .5 .5 .5 1.5   .5 .5 .5 .5 1 ...

        .5 .5 .5 .5 1   .5 .5 .5 .5 1   .5 .5 .5 1 .5   .5 .5 .5 .5 .5 .5   .5 .5 .5 .5 1 ...

         3   .5 .5 .5 .5 1   .5 .5 .5 .5 1   .5 .5 .5 .5 1   3 ...

        .5 .5 .5 .5 1   .5 .5 .5 .5 1   .5 .5 .5 .5];

    

play(t,tdur,b,bdur)   % 这是一个函数!!!

再来看函数代码!

什么是函数!大家学过了C语言,MATLAB里面的函数概念和C语言一致,形式上有所不同!

可以看看下面的文章,打开链接即可,快速学习一下基础语法知识!

MATLAB课程之第三章v2 M文件知识(1)

MATLAB课程之第四章v2 程序设计(1)

看了两章课程后,再看下面的代码就容易懂了!

function music = play(treble, treble_duration, bass, bass_duration)

fs = 11025;               % sampling frequency, 11025 Hz on PC/Mac

speed_factor = 2;      % cpu speed compensation factor


treble_vector = zeros(1,sum(treble_duration)*fs+1);  

% treble vector generator

n1 = 1;                                           % starting index

for kk = 1:length(treble)

keynum = treble(kk);

                      

if (keynum == 0)                      % rest period definition

A = 0.0;                                     % amplitude at 0.0

freq = 440;

else

A = 0.5;                                     % note amplitude at 0.5

freq = 440 * (2^( (keynum-49)/12 ));         

% frequency definition

end

tt = 0 : (1/fs) : (treble_duration(kk)/speed_factor);  

% duration generator

tone = A * cos( 2* pi* freq* tt);                      

% tone generator

                               

n2 = n1 + length(tone) - 1;                            

% ending index & concatenate vector

treble_vector(n1:n2) = treble_vector(n1:n2) + tone;    

% vector generator

n1 = n2;                                               

% reset index

end


bass_vector = zeros(1,sum(bass_duration)*fs+1);           

% bass vector generator

n1 = 1;

for kk = 1:length(bass)

keynum = bass(kk);

if (keynum == 0)

A = 0;

freq = 440;

else

A = 0.5;

freq = 440 * (2^( (keynum-49)/12 ));

end

tt = 0 : (1/fs) : (bass_duration(kk)/speed_factor);

tone = A * cos( 2* pi* freq* tt);

%

n2 = n1 + length(tone) - 1;

bass_vector(n1:n2) = bass_vector(n1:n2) + tone;

n1 = n2;

end


music_vector = treble_vector + bass_vector;      

% treble and bass vector combination

sound( music_vector, fs )                        

% generate sound

注意格式!

能不能将编好后的钢琴曲存储为音频文件吗?这样可以发给家人或者朋友听哦!是不是感到成就感爆棚啊?


讲专业发展脉络的课已经到了第三天,同学们此时已经学的非常认真了,每天听课时间就长达两小时,然后还要花时间用于编程实践!为他们的努力点赞!努力学习的态度是老师不断提升教学水平的动力!未完,待续!


修订记录

20220808 完成初稿;

20230828 修订内容v2;

来源:通信工程师专辑
MATLAB
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-08-29
最近编辑:1年前
算法工匠
博士后 | 高级工程师 诚信做事 认真讲课 传播知识
获赞 408粉丝 2665文章 436课程 40
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈