Matlab 如何把频谱图的纵坐标设置为分贝刻度

Matlab 如何把频谱图的纵坐标设置为分贝刻度

Matlab代码如下:

% 如何把频谱图的纵坐标设置为分贝刻度
%
% pr2_2_6 
clc; clear; close all;

load pr2_2_6_sndata1.mat    % 读入数据
X = fft(y);                   % FFT
n2 = 1:L/2+1;                 % 计算正频率索引号
freq = (n2-1)*fs/L;           % 频率刻度
% 第一部分
% 线性幅值作图
figure('Name', '线性幅值')
pos = get(gcf,'Position');
set(gcf,'Position',[pos(1), pos(2)-100,pos(3),(pos(4)-140)]);
plot(freq,abs(X(n2)),'k'); 
grid
xlabel('频率/Hz'); ylabel('幅值')
title('线性幅值')
set(gcf,'color','w');
% pause %暂时停止执行,并等待用户按下任意键。

% 第二部分
% 用对数坐标作图
figure('Name', '用对数坐标作图')
pos = get(gcf,'Position');
set(gcf,'Position',[pos(1), pos(2)-100,pos(3),(pos(4)-140)]);
semilogy(freq,abs(X(n2)),'k'); % 把y轴用对数坐标作图
grid;
xlabel('频率/Hz'); ylabel('幅值')
title('对数坐标幅值'); hold on
set(gcf,'color','w');

% 计算分贝值作图
figure('Name', '计算分贝值作图')
X_db = 20*log10(abs(X(n2))); %把FFT之后的幅值转换为分贝值
pos = get(gcf,'Position');
set(gcf,'Position',[pos(1), pos(2)-100,pos(3),(pos(4)-140)]);
plot(freq,X_db,'k'); 
grid;
xlabel('频率/Hz'); ylabel('幅值/dB')
title('分贝幅值'); hold on
set(gcf,'color','w');

Matlab 如何把频谱图的纵坐标设置为分贝刻度_第1张图片

Matlab 如何把频谱图的纵坐标设置为分贝刻度_第2张图片

Matlab 如何把频谱图的纵坐标设置为分贝刻度_第3张图片

你可能感兴趣的:(Matlab数字信号处理,matlab,信号处理,算法)