绘制三维空间上的奈奎斯特图——将多个二维图叠加成三维图

分数阶PID控制器

在matlab中绘制分数阶PID控制器的奈奎斯特图时,由于没有办法使用tf来构造传递函数,并进一步用自带的函数库画图,从而只能从原理上计算数据绘图。

使用PLOT3绘图

clc;clear ;
Uin = 48; % 输入电压
L = 130e-6; % 电感值
C = 68e-6; % 电容值
R = 5; % 电阻值
% miu = 1; % 微分项的分数阶次
%Kp=0.01
Kp = 0.01:0.001:0.05; % 比例项
Ki = 10; % 积分项
% Kd = 0.2; % 微分项
% 创建频率向量
omega = linspace(-1e5, 1e5, 5e4); % 设置频率范围
% 初始化 lambda 值范围
lambdas =  [0.4 0.8 0.9 1 1.1 1.2 1.3  1.4 1.5 1.6 ] ;
% 初始化奈奎斯特图数据
num_omegas = length(omega);
num_lambdas = length(lambdas);
num_kp=length(Kp);
G_lambda = zeros(num_omegas, num_lambdas);
% 计算奈奎斯特图数据
for j=1:num_kp
    for i = 1:num_lambdas
        lambda = lambdas(i);
        Gc = Kp(j) + Ki * (1i*omega).^(-lambda);
        Gv = Uin ./ ((1i*omega).^2 .* L .* C + (L/R) .* (1i*omega) + 1);
        G_lambda(:, i) = Gc .* Gv;
    end

    % 绘制奈奎斯特图
    G_plot1=G_lambda(2e4:2.49e4,1:num_lambdas);
    G_plot2=G_lambda(2.51e4:3e4,1:num_lambdas);

    z_num1=length(real(G_plot1));z1=Kp(j).*ones(z_num1,1);
    z_num2=length(real(G_plot2));z2=Kp(j).*ones(z_num2,1);

    plot3(real(G_plot1),imag(G_plot1),z1,'Color',[0.5 0.5 0.5])
    plot3(real(G_plot2),imag(G_plot2),z2,'Color',[0.5 0.5 0.5])
    
    grid on  %打开网格线,便于观察和分析
    xlim([-8 10])
    ylim([-20 20])
    hold on
end
x1=[-1,-1];y1=[0,0];z1=[0,0.06];
line(x1,y1,z1,'Color','red','lineWidth',3);
xlabel('实部');
ylabel('虚部');
zlabel('比例系数Kp')






        在小循环中计算不同λ时,实质就是在z轴变量相同时的几组数据,然后在绘制奈奎斯特部分,G_plot1、2就是提取出计算的数据的部分,让画图的数据量小些,z_num就是生成和xy轴数据量相同的一组数,kp控制着z轴的大小,相当于就是多个二维图叠加的效果了。

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脚踩轮椅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值