时域和频域数据之间的转换
System Identification Toolbox™ 提供用于分析数据以及在时间和频域中估计和评估模型的工具。要使用与测量数据不在同一域中的工具和方法,您可以在时域和频域之间转换数据。
iddata 对象存储时域或频域数据。
时域 数据由一个或多个输入变量 u(t) 和一个或多个输出变量 y(t) 组成,作为时间函数进行采样。
频域数据由变换后的输入和输出时域信号或作为独立变量频率的函数采样的系统频率响应组成。
有关在 MATLAB® 中表示时域和频域数据的详细信息,请参阅 Representing Data in MATLAB Workspace。
您可以将数据从一个域转换到另一个域。该表总结了在时域和频域之间转换数据的命令。有关更多命令信息,请参阅相应的命令参考页面。
| 命令 | 描述 | 语法示例 |
|---|---|---|
fft | 时域数据转换到频域。 您可以指定 | 要将时域 f_data = fft(t_data,N) |
ifft | 将频域数据变换到时域。频率是线性的并且间隔相等。 | 要将频域 t_data = ifft(f_data) |
将 iddata 数据转换为 idfrd 频率响应的形式是一种估计。如果您想使用 iddata 对象估计频率响应,请参阅Transforming Between Frequency-Domain and Frequency-Response Data。
在时域和频域之间变换数据
将数据从时域转换到频域,再转换回时域,并比较从原始数据和转换后的数据估计的模型的性能。
加载并绘制包含 300 个采样的时域数据 z1。
load iddata1 z1 plot(z1)

查找 z1 的采样时间 Ts。
Ts = z1.Ts
Ts = 0.1000
采样时间为 0.1 秒。
将 z1 变换到频域。
z1f = fft(z1)
z1f =
Frequency domain data set with responses at 151 frequencies.
Frequency range: 0 to 31.416 rad/seconds
Sample time: 0.1 seconds
Outputs Unit (if specified)
y1
Inputs Unit (if specified)
u1
Data Properties
频率范围扩展至 31.416 rad/s,相当于 pi/Ts 的奈奎斯特频率。
绘制频域数据。
plot(z1f)

将 z1f 转换回时域并将两个时域信号绘制在一起。
z1t = ifft(z1f)
z1t =
Time domain data set with 300 samples.
Sample time: 0.1 seconds
Outputs Unit (if specified)
y1
Inputs Unit (if specified)
u1
Data Properties
plot(z1t,z1)

信号精确排列。
估计 z1 和 z1t 的二阶状态空间模型。
sys1 = ssest(z1,2); sys1t = ssest(z1t,2); compare(z1,sys1,sys1t)

估计 z1f 的状态空间模型。
sys1f = ssest(z1f,2); compare(z1f,sys1f)

时域和频域模型的拟合百分比相似。
另请参阅
fft | iddata | ifft | etfe | spa | spafdr