周波数特性を知りたい

11 次查看(过去 30 天)
Kaede
Kaede 2020-8-6
评论: Kaede 2020-8-17
clear;
[p1,fs]=audioread('40kph_RN.wav');
[p2,fs]=audioread('2000rpm_Knock.wav');
fs=44100;
p2(448512,[1 2]) = [0,0];
smix=p1+p2;
soundsc(smix,fs)
このような音を二つ重ねた時の周波数特性を表示する方法を教えていただきたいです.基本的なことなのですが,久しぶりにMATLABを触ったため忘れてしまいました.
  1 个评论
Kaede
Kaede 2020-8-6
このとき縦軸はmag2dbを使ってdBに変換したいです.

请先登录,再进行评论。

回答(1 个)

Kaede
Kaede 2020-8-6
clear;
[p1,fs]=audioread('40kph_RN.wav');
[p2,fs]=audioread('2000rpm_Knock.wav');
fs=44100;
N=1024;
p2(448512,[1 2]) = [0,0];
smix=p1+p2;
%soundsc(smix,fs)
p1_fft=fft(p1,N);
p2_fft=fft(p2,N);
A=zeros(1,N/2+1);
B=zeros(1,N/2+1);
frequency=zeros(1,N/2+1);
for k=1:N/2+1;
A(k)=abs(p1_fft(k));
B(k)=abs(p2_fft(k));
frequency(k)=(k-1)*fs/N;
end
dB_A=mag2db(A);
dB_B=mag2db(B);
plot(frequency,dB_A);
hold on
plot(frequency,dB_B);
hold off
自分でも行ってみましたが表示されたグラフ的に違うような気がします.
  4 个评论
takemoto
takemoto 2020-8-17
別のスレッドで既に解決されている様ですが、fft関数の第二引数を省略することで、入力の全データに対して変換処理を行いますので、この例ですと、
p1_fft=fft(p1,N); ==> p1_fft=fft(p1);
p2_fft=fft(p2,N); ==> p2_fft=fft(p2);
とすればよさそうです。
Kaede
Kaede 2020-8-17
コメントありがとうございます.
すでに解決いたしましたがわかりやすく書いていただきありがとうございます.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 スペクトル測定 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!