何为时域和频域?

时域是指时间域,频域是指频率域。 时域和频域是信号的基本性质。

1、时域(时间域)——自变量是时间,即横轴是时间,纵轴是信号的变化。其动态信号x(t)是描述信号在不同时刻取值的函数。
在这里插入图片描述
图1是正弦波的时域图,示出了振幅与时间的关系。
在时域图中,横轴是时间,纵轴是振幅。
时域图显示振幅随时间的变化,可以看出峰值振幅为5V,可以算出频率f=6 Hz。

2、频域(频率域)——自变量是频率,即横轴是频率,纵轴是该频率信号的幅度,也就是通常说的频谱图。
在这里插入图片描述
图2是图1中正弦波的频域图在频域图中,横轴是频率,纵轴是峰值振幅。
频域图仅仅示出峰值振幅与频率,而不显示振幅随时间的变化。
从频域图可以看出,正弦波的频率为6Hz,这个6Hz的正弦波的峰值振幅为5V 。

频域图的优点是: 从频域图中,可以一眼看出正弦波的频率和峰值振幅,整个正弦波在频域图上只是一个立柱立柱的位置显示了正弦波的频率,立柱的高度显示了正弦波的峰值振幅

  • 17
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,可以使用FFT算法来对信号进行频域变换。下面是一个简单的示例代码,可以对正弦信号进行频域变换并输出结果: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #include <complex.h> #define PI 3.14159265358979323846 void fft(double complex *x, int n) { if (n <= 1) return; double complex *even = malloc(n/2 * sizeof(double complex)); double complex *odd = malloc(n/2 * sizeof(double complex)); for (int i = 0; i < n/2; i++) { even[i] = x[2*i]; odd[i] = x[2*i+1]; } fft(even, n/2); fft(odd, n/2); for (int k = 0; k < n/2; k++) { double complex t = cexp(-2 * PI * I * k / n) * odd[k]; x[k] = even[k] + t; x[k+n/2] = even[k] - t; } free(even); free(odd); } int main() { int N = 1024; // 采样点数 double Fs = 1000; // 采样频率 double f = 100; // 正弦信号频率 double A = 1; // 正弦信号幅值 double T = 1/Fs; // 采样周期 double t[N], y[N]; for (int i = 0; i < N; i++) { t[i] = i * T; y[i] = A * sin(2*PI*f*t[i]); } double complex x[N]; for (int i = 0; i < N; i++) { x[i] = y[i] + 0 * I; } fft(x, N); for (int i = 0; i < N; i++) { double freq = i * Fs / N; printf("%f %f\n", freq, cabs(x[i])); } return 0; } ``` 该代码首先生成了一个包含1024个采样点的正弦信号,采样频率为1000Hz,频率为100Hz,幅值为1。然后将信号转换为复数形式,调用FFT算法进行频域变换,最后输出变换结果。输出结果的每一行包含两个值,分别为频率和幅值。在该示例代码中,输出结果包含了从0Hz到500Hz的频率范围。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值