查看: 482|回復: 5|關注: 0
打印 上一主題 下一主題

奇迹觉醒充值大天使五阶宝箱: [已解決] 新手上路:關于錯誤使用+,矩陣維度必須一致的問題

[復制鏈接]

新手

29 麥片

財富積分


奇迹觉醒女神之光 www.mhotr.icu 050


1

主題

5

帖子

0

最佳答案
跳轉到指定樓層
1#
[y,fs]=audioread('Super Mario Bros.mp3');
N=length(y);
y=audioread('Super Mario Bros.mp3');      %把語音信號進行加載入Matlab 仿真軟件平臺中
sound(y,fs);          %對加載的語音信號進行回放
Y=fft(y);                 %快速傅里葉變換
figure(1);
subplot(2 ,1 ,1),plot(y);title('原始信號波形');
subplot(2 ,1 ,2),plot(abs(Y));title('原始信號頻譜');

noise=rand(N,1)/20;      %噪聲信號的函數
z=fft(noise);            %快速傅里葉變換
figure(2);
subplot(2 ,1 ,1),plot(noise);title('噪聲信號波形');
subplot(2 ,1 ,2),plot(abs(z));title('噪聲信號頻譜');
axis([0,1000,0,10]);
s=y+noise;               %噪聲信號的疊加
figure(3)
subplot(2,2,1);plot(s);title ('濾波前的時域波形');
S=fft(s);
subplot(2,2,2);plot(abs(S));
title ('濾波前的頻域波形');

%設計低通橢圓濾波器
Ft=8000;            
Fp1=1000;
Fs1=1200;
wp1=2.*Fp1./Ft;
ws1=2.*Fs1./Ft;
[N,wc]=ellipord(wp1,ws1,1,100,'s');  %最小階數和截止頻率   根據轉換后的技術指標使用濾波器階數函數,確定濾波器的最小階數N和截止 頻率Wc; 巴特沃斯模擬濾波器的階數N及頻率參數wc,            
[b,a]=ellip(N,1,100,wc);
[h,w]=freqz(b,a);               %繪出頻率響應曲線
figure(4);
subplot(3,1,1);
plot(w.*Ft.*0.5./pi,abs(h));
legend('用ellip設計');
title('IIR低通濾波器');
axis([0,2000,0,1]);


z11=filter(b,a,s);
m11=fft(z11);
figure(3)
subplot(2,2,3);plot(z11,'g');title ('濾波后的時域波形');
subplot(2,2,4);plot(abs(m11),'r');title ('濾波后的頻域波形');
sound(z11);

%設計高通濾波器
%Ft=8000;            
Fp2=5000;
Fs2=4800;
wp2=Fp2/Ft;
ws2=Fs2/Ft;
[N,wc]=ellipord(wp2,ws2,1,100,'s');  %最小階數和截止頻率              
[b,a]=ellip(N,1,100,wc,'high');
[h,w]=freqz(b,a);               %繪出頻率響應曲線
figure(4);
subplot(3,1,2)
plot(w.*Ft.*0.5./pi,abs(h));
legend('用ellip設計');
title('IIR高通濾波器');
axis([0,5000,0,1]);
z12=filter(b,a,s);
m12=fft(z12);
figure(5)
subplot(2,1,1);plot(z12,'g');title ('高通濾波后的時域波形');
subplot(2,1,2);plot(abs(m12),'r');title ('高通濾波后的頻域波形');
sound(z12);

%設計帶通濾波器
wp3=[1200,3000]./(Ft./2);
ws3=[1000,3200]./(Ft./2);
[N,wc]=ellipord(wp3,ws3,1,100,'s');  %最小階數和截止頻率              
[b,a]=ellip(N,1,100,wc);
[h,w]=freqz(b,a);               %繪出頻率響應曲線
figure(4);
subplot(3,1,3);
plot(w.*Ft.*0.5./pi,abs(h));
legend('用ellip設計');
title('IIR帶通濾波器');
axis([0,5000,0,1]);

z13=filter(b,a,s);
m13=fft(z13);
figure(6);
subplot(2,1,1);plot(z13,'g');title ('帶通濾波后的時域波形');
subplot(2,1,2);plot(abs(m13),'r');title ('帶通濾波后的頻域波形');
sound(z13);

新手

29 麥片

財富積分


050


1

主題

5

帖子

0

最佳答案
2#
 樓主| 發表于 2019-5-26 19:55:20 | 只看該作者
同學用的同樣的程序 語音文件不同,可是我的出現了錯誤使用+,矩陣維度,他的沒有

論壇優秀回答者

5

主題

1552

帖子

428

最佳答案
  • 關注者: 125
3#
發表于 2019-5-26 19:57:14 | 只看該作者 |此回復為最佳答案
s=y+noise;
y是246000行2列,noise只有1列,不能進行加減等等操作,除非noise行數列數與y一致

新手

29 麥片

財富積分


050


1

主題

5

帖子

0

最佳答案
4#
 樓主| 發表于 2019-5-26 20:00:18 | 只看該作者
TouAkira 發表于 2019-5-26 19:57
s=y+noise;
y是246000行2列,noise只有1列,不能進行加減等等操作,除非noise行數列數與y一致 ...

那是不是我的語音文件有問題呢,因為我同學就沒出現這個問題

新手

29 麥片

財富積分


050


1

主題

5

帖子

0

最佳答案
5#
 樓主| 發表于 2019-5-26 20:04:16 | 只看該作者
TouAkira 發表于 2019-5-26 19:57
s=y+noise;
y是246000行2列,noise只有1列,不能進行加減等等操作,除非noise行數列數與y一致 ...

如果要改的話,應該怎么糾正

新手

29 麥片

財富積分


050


1

主題

5

帖子

0

最佳答案
6#
 樓主| 發表于 2019-5-26 20:18:21 | 只看該作者
TouAkira 發表于 2019-5-26 19:57
s=y+noise;
y是246000行2列,noise只有1列,不能進行加減等等操作,除非noise行數列數與y一致 ...

已經可以了 謝謝?。。。。?!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

關閉

站長推薦上一條 /3 下一條

快速回復 奇迹觉醒女神之光 返回列表