How to plot frequency spectrum in log-log scale?
조회 수: 84 (최근 30일)
이전 댓글 표시
Hello,
I'm trying to plot a frequency spectrum for a given set of data with log scales in both axes which should scale as 10^0, 10^1,10^2........
I tried to write the code but its not generating the same.
Kindly let me know the corrections in the followint code. The data is as attached/uploaded herewith.
close all;
freq_sam = 100; % samples
period_ctrw = 0.005; % time period
freq_ctrw = 1/period_ctrw; % frequency
data_ctrw = data.variable.turbulence(:,100);
x_data = data.variable.turbulence(:,1);
y_data = data.variable.turbulence(:,100);
disp(x_data);
disp(y_data);
signal_ctrw = data_ctrw;
fft_ctrw = fft(signal_ctrw); % fourier transform
fft_ctrw = fftshift(fft_ctrw); % performing fft shift
f = freq_sam/2*linspace(-1,1,freq_sam);
figure;
set(gca, 'YScale', 'log')
set(gca, 'XScale', 'log')
plot(f, fft_ctrw,'.','MarkerSize',24);
댓글 수: 0
채택된 답변
Dyuman Joshi
2023년 9월 14일
If you change the scale of axes and plot the data afterwards, the scale will get modified according to the data. Better to change the scale after plotting.
Note the warnings.
load('data5a_chi1-15.mat')
freq_sam = 100; % samples
period_ctrw = 0.005; % time period
freq_ctrw = 1/period_ctrw; % frequency
data_ctrw = data.variable.turbulence(:,100);
x_data = data.variable.turbulence(:,1);
y_data = data.variable.turbulence(:,100);
%disp(x_data);
%disp(y_data);
signal_ctrw = data_ctrw;
fft_ctrw = fft(signal_ctrw); % fourier transform
fft_ctrw = fftshift(fft_ctrw); % performing fft shift
f = freq_sam/2*linspace(-1,1,freq_sam);
figure;
plot(f, fft_ctrw,'.','MarkerSize',24);
set(gca, 'XScale', 'log')
set(gca, 'YScale', 'log')
댓글 수: 0
추가 답변 (1개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Spectral Measurements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!