【控制之美】利用fft求解bode图-matlab

方法一:基于 frd 对象转换数据

生成频率向量和响应数据:使用 logspace 函数生成频率向量 freq ,并计算对应的频率响应数据 resp 。示例代码如下:

freq = logspace(1, 2); % 生成从10^1到10^2的对数间距频率向量

resp = 0.05 * (freq).* exp(1i * 2 * freq); % 计算频率响应数据

创建 frd 模型:使用 frd 函数将频率响应数据 resp 和频率向量 freq 创建成 frd 模型 sys 。示例代码如下:

sys = frd(resp, freq);

绘制Bode图:使用 bode 函数绘制 frd 模型 sys 的Bode图。示例代码如下:

bode(sys);

方法二:直接处理FFT结果

定义系统和输入输出数据:定义系统的传递函数的分子分母,生成输入输出数据。示例代码如下:

num = [0 1]; % 传递函数分子

den = [1 -0.8]; % 传递函数分母

u = randn(100,1); % 输入信号

t = 1:length(u);

ym,\~,\~\] = lsim(tf(num, den), u, t); % 系统输出 计算FFT:对输入输出数据进行FFT计算,并计算对应的频率向量。示例代码如下: ts = 1; fs = 1/ts; l = length(ym); nfft = 2\^nextpow2(l); % 取大于等于l的最小2的幂次方 h2 = fft(ym, nfft)./fft(u, nfft); f = fs/2\*linspace(0, 1, nfft/2 + 1); ww = f\*2\*pi; figure semilogx(ww, 20\*log10(abs(h2(1:nfft/2 + 1)))); % 幅值Bode图 figure semilogx(ww, (180/pi)\*angle(h2(1:nfft/2 + 1))); % 相位Bode图

相关推荐
机器学习之心3 小时前
MATLAB基于BNT工具箱的多输入分类预测
matlab·分类
机器学习之心20 小时前
MATLAB基于改进云物元的模拟机协同训练质量评价
matlab·改进云物元
ytttr87320 小时前
MATLAB实现经验模态分解(EMD)与希尔伯特变换获取能量谱
人工智能·python·matlab
t1987512821 小时前
基于多假设跟踪(MHT)算法的MATLAB实现
开发语言·matlab
机器学习之心1 天前
MATLAB多子种群混沌自适应哈里斯鹰算法优化BP神经网络回归预测
神经网络·算法·matlab
π同学1 天前
基于Matlab的递推最小二乘法参数估计
matlab·最小二乘法
小喵要摸鱼1 天前
【MATLBA】使用教程
matlab
listhi5202 天前
基于空时阵列最佳旋转角度的卫星导航抗干扰信号处理的完整MATLAB仿真
开发语言·matlab·信号处理
88号技师2 天前
2025年7月一区SCI优化算法-Logistic-Gauss Circle optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
yugi9878382 天前
基于MATLAB的心电信号去噪
开发语言·matlab