遇到一些数字信号,或者一些数组的图,有时候需要计算出准确的频率是多少,下面是一个示例:
close
% 假设x是你的时间序列信号,Ts是采样时间间隔
Ts = 0.001; % 采样时间间隔,例如1ms
t = (0:N-1)*Ts; % 时间向量
x = sin(2*pi*10*t)+ sin(2*pi*20*t) ; % 信号
N = length(x); % 信号长度
% 计算傅里叶变换
X = fft(x);
% 计算频率轴
f = (0:N-1)*(1/(N*Ts)); % 频率向量
% 为了可视化,通常只取一半的频谱(Nyquist定理)
N2 = ceil(N/2); % 取FFT结果的一半
X_magnitude = abs(X(1:N2)); % 幅度谱
f = f(1:N2); % 对应的频率
% 绘制频谱图
figure; % 创建新图形窗口
subplot(211)
plot(t,x)
subplot(212)
plot(f, X_magnitude);
title('Frequency Spectrum');
xlabel('Frequency (Hz)');
ylabel('|X(f)|');