假设正弦波的公式为 y = A * sin(2 * pi * f * t),其中 A 为振幅,f 为频率,t 为时间。

要计算正弦波的频率,可以使用傅里叶变换。具体代码如下:

% 生成正弦波信号
fs = 1000; % 采样率
t = 0:1/fs:1; % 时间向量
f = 10; % 频率
A = 1; % 振幅
y = A*sin(2*pi*f*t); % 正弦波信号

% 计算频谱
N = length(y); % 信号长度
Y = fft(y); % 傅里叶变换
P2 = abs(Y/N); % 双边频谱
P1 = P2(1:N/2+1); % 单边频谱
P1(2:end-1) = 2*P1(2:end-1); % 能量归一化
f = fs*(0:(N/2))/N; % 频率向量

% 找到主频率
[maxVal, maxIdx] = max(P1);
f0 = f(maxIdx);

% 画出频率随时间变化的图
plot(t, f0*ones(size(t))); % 画出频率随时间变化的曲线
xlabel('Time (s)'); ylabel('Frequency (Hz)'); % 设置坐标轴标签

注:以上代码中,傅里叶变换后得到的频谱 P1 表示的是信号中各个频率成分的能量大小,找到其中能量最大的频率对应的就是信号的主频率。

MATLAB 计算正弦波频率并绘制频率随时间变化曲线

原文地址: https://www.cveoy.top/t/topic/kDqS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录