matlab实验心得体会
这个就是我自己做出来的,发现用soundsc听出来还行,但是用wavwrite就变的很难听。后来发现PB写的很好,而且还能够把前面一段没有噪音的部分给保存下来,我就看了他的代码,有几点体会:
1.将代码写在.m文件里,这样只需要该文件里的.就可以而不必每次都去敲命令;
2.PB对于vector使用的比较熟,我一开始也想到能不能只将后面一段由噪声的给滤掉而保留以前的,但是没想到什么方法,看了PB的代码发现,他对于vector了解的比较深刻,我上面的想法最后只使用一句代码就搞定了
3.对于噪声频率,一定要选准确,PB对每一段噪声只使用的一个频率,就将噪声滤干净了,我用了每段噪声附近的几个波形还没有得到理想波形,最后我发现我选的中心频率和PB的只相差10~25赫兹,所以一定要精确,后来WH又试了一下,只发现改变5HZ的频率都不行
4.加入团队以来,尤其是加入种子班之后就一直告诫自己要时刻抱着一个学习的心态,对于任务不要只是敷衍,完成就好,而是自己一定要从中学到东西,而且在这个过程中一定要逐步掌握自己的学习方法,但是就是这个Matlab,我就是在敷衍了事,所以没有什么事情是可以敷衍的,学习发生在每时每刻,不能因为这是必上的课程而自己没有兴趣就蒙混过关,应该利用这个机会锻炼自己,积极起来,改变自己懒惰的弱点。
PS:附上修改后的代码
%get the samples rate and vector of the wave
[xx, fs] = wavread('SunshineSquare');
xx = xx';
specgram(xx, [], fs);
%^get the A from the frequencies of the noises
fnoise = [0 1575 3150 4725];
ww = 2*pi*fnoise/fs;
A = -2*cos(ww);
%seperate the wave based on the tone "du"
leng = length(xx);
du = floor((7.749/10.791)*leng);
%determine the h[n] of correspond noise
hh = [1 A(1) 1];
for i = 2:4
hh1 = [1 A(i) 1];
hh = conv(hh, hh1);
end
%filter the noise
yy = filter(hh, 1, xx);
%delete the tone "du"
yy(du - 65 : du + 65) = 0;
du = floor(10.751/10.791*leng);
yy(du - 100 : du + 80) = 0;
figure(2);
specgram(yy, [], fs);
wavwrite(yy,fs,32,'filter1');
%replace the wave which has been filtered with the good part
du = floor((7.749/10.791)*leng);
yy(1:du)=xx(1:du);
%delete the tone "du"
yy(du - 65 : du + 65) = 0;
du = floor(10.751/10.791*leng);
yy(du - 100 : du + 80) = 0;
%paint the picture and play it
figure(3);
specgram(yy, [], fs);
soundsc(yy,fs);
wavwrite(yy,fs,32,'filter2');
【matlab实验心得体会】相关文章:
做matlab实验心得09-27
MATLAB实验报告模板01-27
杨氏双缝干涉实验的MatLab模拟10-07
MatLab实习心得体会07-05
基于Matlab仿真的联合变换相关器实验10-18
matlab实训心得体会01-05
Matlab用于发动机故障预报及Delphi对Matlab的调用07-25
matlab线性规划11-08
LabVIEW与MATLAB混合编程01-20