绘制数据的噪声谱

8个观点(过去30天)
nirala se
nirala se 2021年8月30日
评论道: 马修•诺伊 2021年9月2日
Hii,我有一个noisy_data(单列)和一个noisy_matrix文件(10 nos列),我想为其制作噪声频谱图。
我的数据以data.zip的名称附在这里
我试着用 https://in.mathworks.com/help/ident/ug/noise-spectrum-plots.html 但我做不到,因为我是matlab新手。
我希望专家们能在这方面帮助我。
提前谢谢。
1评论
nirala se
nirala se 2021年8月30日
专家们好,我正在等待答案。谢谢。

登录发表评论。

答案(1)

马修•诺伊
马修•诺伊 2021年8月31日
你好Nirala
这是我的FFT信号分析代码
它用平均和光谱图进行FFT
您可以根据您的需要修改NFFT和重叠值
它已经适应了你的两个数据文件(我添加了原来丢失的.txt扩展名)
此外,采样频率尚未定义,请相应地修改
看看这个:
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%负载信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
数据示例1
% signal = readmatrix('noisy_data.txt');
% [samples,channels] = size(信号);
%%数据示例2
信号= readmatrix (“noisy_matrix.txt”);
(样品、通道)=大小(信号);
selected_channel = 10;在这里选择您的数据通道。
信号=信号(:,selected_channel);
Fs = 1000;%待查
dt = 1 / f;
时间= (0:samples-1) * dt;
%% decimate(如果需要)
% NB: decim = 1将不做任何事情(输出=输入)
decim = 1;
如果decim > 1
信号=毁掉(信号,decim);
Fs = Fs / decim;
结束
样品长度=(信号);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FFT参数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
NFFT = 64;% fft长度
重叠= 0.75;%在0到1之间的最大值;缓冲区重叠=重叠*NFFT
%谱图dB刻度
spectrogram_dB_scale = 80;% dB范围刻度(意味着,显示的最低级别比最大级别低XX dB)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%的选项
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
如果您处理的是声学,您可能希望有一个加权的A。
%光谱
% option_w = 0:线性谱(无加权dB (L))
% option_w = 1:加权频谱(dB (A))
option_w = 0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%显示1:平均FFT频谱
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[freq, sensor_spectrum] = myfft_peak(信号,Fs,NFFT,OVERLAP);
% convert to dB scale (ref = 1)
sensor_spectrum_dB = 20 * log10 (sensor_spectrum);
如果需要称重
如果option_w = = 1
pondA_dB = pondA_function(频率);
sensor_spectrum_dB = sensor_spectrum_dB + pondA_dB;
my_ylabel = (“振幅(dB (A))”);
其他的
my_ylabel = (“振幅(dB (L))”);
结束
图(1)中,情节(频率、sensor_spectrum_dB“b”网格);
标题(['平均FFT频谱/ Fs = 'num2str(0.1 *轮(10 * Fs))' Hz / Delta f = 'num2str(0.1 *轮(10 *(频率(2)频率(1))))“赫兹”]);
包含(的频率(赫兹)); ylabel (my_ylabel);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%显示2:时间/频率分析:频谱图演示
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[sg,最为次数)= specgram (Fs信号,NFFT,汉宁(NFFT),地板(NFFT *重叠));
% FFT归一化和从线性到dB的转换振幅(峰值)
sg_dBpeak = 20 * log10 (abs (sg)) + 20 * log10(2 /长度(最为));% NB: X=fft(X .*hanning(N))*4/N;%汉宁只
如果需要称重
如果option_w = = 1
pondA_dB = pondA_function(最为);
sg_dBpeak = sg_dBpeak + (pondA_dB *(1、大小(sg_dBpeak 2)));
my_title = (的谱图(dB (A)));
其他的
my_title = (的谱图(dB (L)));
结束
dB范围的%饱和度:
%饱和_db = 60;% dB范围刻度(意味着,显示的最低级别比最大级别低XX dB)
min_disp_dB = round(max(max(sg_dBpeak))) - spectrogram_dB_scale;
sg_dBpeak (sg_dBpeak < min_disp_dB) = min_disp_dB;
%情节光谱图
图(2);
显示亮度图像(次数、最为sg_dBpeak); colormap (“喷气机”);
轴(“xy”); colorbar (“绿色”网格);
标题([my_title' / Fs = 'num2str(0.1 *轮(10 * Fs))' Hz / Delta f = 'num2str(0.1 *轮(10 *(最为(2)最为(1))))“赫兹”]);
包含(“时间(s)”); ylabel (的频率(赫兹));
函数pondA_dB = pondA_function (f)
(A)加权曲线
n = ((12200 ^ 2 * f。^ 4)。/ ((f。^ 2 + 20.6 ^ 2)。* (f。^ 12200 ^ 2 + 2)。* sqrt (f。^ 2 + 107.7 ^ 2)。* sqrt (f。^ 2 + 737.9 ^ 2)));
r =((12200 ^ 2 * 1000。^ 4)。/((1000 ^ 2 + 20.6 ^ 2)。*(1000。12200 ^ ^ 2 + 2)。* sqrt(1000 ^ 2 + 107.7 ^ 2)。* sqrt(1000 ^ 2 + 737.9 ^ 2))) *的(大小(f));
pondA = n / r;
pondA_dB = 20 * log10 (pondA (:));
结束
函数[freq_vector,fft_spectrum] = myfft_peak(信号,Fs, nfft, Overlap)
信号的FFT峰值谱(例如FFT后的窦振幅1 = 0 dB)。
%线性平均
% signal -输入信号,
% Fs -采样频率(Hz)。
% nfft - FFT窗口大小
重叠%——重叠%的缓冲百分比(在0到0.95之间)
(样品、通道)=大小(信号);
%用零填充信号,如果它的长度小于NFFT
如果< nfft样品
s_tmp = 0 (nfft、渠道);
s_tmp((: 1:样品))=信号;
信号= s_tmp;
样品= nfft;
结束
% window: hanning
=汉宁窗(nfft);
窗口=窗口(:);
%计算FFT与重叠
抵消=修复((1-Overlap) * nfft);
Spectnum = 1+ fix((samples-nfft)/offset);%窗口数量
info的% %相当于:
% noverlap =重叠*nfft;
% spectnum = fix((sample -noverlap)/(nfft-noverlap));%窗口数量
%主循环
fft_spectrum = 0;
我= 1:spectnum
开始=(张)*抵消;
sw =信号((1 +开始):(启动+ nfft):)。*(窗口*的(渠道));
Fft_spectrum = Fft_spectrum + (abs(fft(sw))*4/nfft);% X = fft (X。*汉宁(N)) * 4 / N;%汉宁只
结束
fft_spectrum = fft_spectrum / spectnum;%来做线性平均缩放
%单侧fft频谱%选择前半段
如果快速眼动(nfft, 2)% nfft奇怪
选择= (1:(nfft + 1) / 2) ';
其他的
选择= (1:nfft / 2 + 1) ';
结束
: fft_spectrum = fft_spectrum(选择);
freq_vector = (select - 1)*Fs/nfft;
结束
1评论
马修•诺伊
马修•诺伊 2021年9月2日
你好Nirala
如果我的回答符合你的期望,你介意接受吗?
谢谢

登录发表评论。

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!