微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在MATLAB中绘制声信号的频谱

如何解决如何在MATLAB中绘制声信号的频谱

我正在尝试绘制信号的频谱,当我绘制频域中的功率超过 12e11 时,我意识到这是正确的吗?如果不是,在我的情况下,信号功率的正确间隔是多少?我正在研究在智能手机上实现的声音信号。我想确保我的代码是正确的。

%spectrum analysis of the signal
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fs = 48000;%sample rate
x = fopen('F:\fastICATest\1.pcm');%original sound signal
y  = fread(x,inf,'int16');
figure
plot(y)
xlabel('sample number')
ylabel('amplitude')
figure
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
spe = spectrogram(y,512,fs,'yaxis');% read the spectrogram of the signal with peak
plot(abs(spe))
figure
spectrogram(y,'yaxis');%read the spectrogram of the signal
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
signal_short = y(14.48e5:15.2e5);
t = 1/fs:length(signal_short) - 1/fs;%time domain
figure
plot(t,signal_short)
xlabel('Time(s)')
ylabel('amplitude')
xlim([0 t(end)])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m = length(signal_short);
n = pow2(nextpow2(m));
z = fft(signal_short,n);% applying the fft to spectrum
zz = fftshift(z)% frequency shift of fft
figure
plot(abs(z))
xlabel('Frequency')
figure
plot(abs(zz))
xlabel('Frequency shift')
%%%%%%%%%%%%%%%
% f = (0:n-1)*(fs/n);
f = -fs/n:fs/n:fs/2-fs/n;%requency specification
power = abs(zz).^2/n; %power of the signal
figure
plot(f(1:floor(n/2)),power(1:floor(n/2)))
xlabel('Frequency')
ylabel('Power')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?