What is the frequency of my signal?
1 回表示 (過去 30 日間)
古いコメントを表示
Hey everybody,
i have measurement data that i want to filter using a lowpass, bandpass, etc.
To filter it i first wanted to get the frequency of the signal so that i can design my filter properly. Unfortunately there is no peak at a certain frequency as i am used to with other sensors so i am not sure how to filter it. Also i am really surprised by the small frequencys of 0.0X Hz. Is there maybe a mistake in my code? How would you filter this signal?
I also attached the measurement data.
Thank you very much.
%% Fourier-Transformation
CH0 = detrend(CH0);
L = numel(CH0);
Ts = mean(diff(t));
Fs = 1/Ts;
Fn = Fs/2;
CH0FT = fft(CH0-mean(CH0),[],1)/L;
Fv = linspace(0, 1, fix(L/2)+1)*Fn;
Iv = 1:numel(Fv);
CH0abs = abs(CH0FT);
plot(Fv,mag2db(CH0abs(Iv)*2));
0 件のコメント
採用された回答
Star Strider
2021 年 7 月 26 日
編集済み: Star Strider
2021 年 7 月 26 日
Try this —
LD = load('Frequency.mat');
t = LD.t;
CH0 = LD.CH0;
Fs = 0.1; % Design Sampling Frequency
[CH0r,tr] = resample(CH0,t,Fs); % Resample To Constant Sampling Intervals
L = numel(t); % Original Signal Length
Fn = Fs/2; % Myquist Frequency
N = 2^nextpow2(L); % Fourier Transform Length
CH0rm = CH0r - mean(CH0r); % Subtract Mean So Peaks Are More Easily Visible
FT_CH0r = fft(CH0rm,N)/L; % Fourier Transform
Fv = linspace(0, 1, N/2+1)*Fn; % Frequency Vector
Iv = 1:numel(Fv); % Index Vector
figure
plot(Fv, abs(FT_CH0r(Iv))*2, '-')
grid
xlim([0 0.02])
xlabel('Frequency')
ylabel('Amplitude')
[CH0rmax,idx] = max(abs(FT_CH0r(Iv))*2);
text(Fv(idx), CH0rmax, sprintf('$\\leftarrow Amplitude: %6.1f$\n$\\ \\ \\ \\ Frequency = %.6f$',CH0rmax,Fv(idx)), 'Horiz','left', 'Vert','top', 'Interpreter','latex')
[CH0rfilt,DF] = bandpass(CH0r, [1E-4 6.5E-4], Fs, 'ImpulseResponse','iir'); % Filter Signal
figure
plot(tr, CH0r, '-b')
hold on
plot(tr, CH0rfilt, '-r')
hold off
grid
xlabel('t')
ylabel('Amplitude')
legend('Original (Resampled)', 'Filtered', 'Location','best')
Experiment with the filter types and characteristics to get the result you want. See the documentation for the various functions to understans how they work and the reason I used them here. The data were not sampled with a consistent sampling interval, so it was necessary to use the resample funciton to correct for that.
EDIT — (26 Jul 2021 at 16:01)
Added plot image —
.
0 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Get Started with Signal Processing Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!