How to keep main signal and suppress/remove other signal?
2 ビュー (過去 30 日間)
古いコメントを表示
clc
clf
close all
clear all
%%
%import spectrum
load('I_d.mat');
load('depth.mat');
Fs = 200*1e3; %sampling rate: 200 kHz
time = 1/Fs:1/Fs:0.006; %time interval (unit:s)
figure(1)
plot(time,I_d);
title('original signal');
xlabel('time (s)');
ylabel('Amplitude');
signal = I_d;
window = hanning(length(signal));
signal = signal.* window;
FFT = abs(fftshift(fft(signal,2048)));
FFT = FFT/max(FFT);
figure(2)
plot(depth,log(FFT),'linewidth',1);
title('after doing FFT')
xlabel('Depth (µm)');
ylabel('Amplitude');
set(gca,'linewidth',1,'fontsize',15);
grid on
%% plot spectrum with the other method
Fs = 2001e3; %sampling rate
time = 1/Fs:1/Fs:0.006; %time interval (unit:s)
%Default window is hamming window
figure(3)
pwelch(signal,[],[],[],Fs); %[] length of window to be used
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/895025/image.png)
The main signal is at the 2000µm depth (figure).
How do I suppress other signal besides this main signal and maintain signal to noise ratio?
0 件のコメント
採用された回答
Image Analyst
2022 年 2 月 15 日
That's not PSF (Point Spread Function). pwelch() computes PSD (Power Spectral Density). Basically you can fft the signal, then zero out all elements except those at or around 2000 and -2000, and then inverse transform.
2 件のコメント
Image Analyst
2022 年 2 月 17 日
Not sure why your x axis has units of depth (space domain) instead of Hz (frequency domain). Can you explain?
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Spectral Analysis についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!