MATLAB中plot函数的二位图像绘图技巧

版权申诉
5星 · 超过95%的资源 1 下载量 111 浏览量 更新于2024-12-10 收藏 381KB ZIP 举报
资源摘要信息:"在MATLAB中,绘图是一项基本而重要的操作,可以将数据可视化,帮助用户更好地理解数据趋势、分布和其他重要特性。其中,plot函数是MATLAB中最常用的二维图形绘制函数之一,它能够将一组或几组数据点以折线图、散点图等形式展现出来。plot函数的基本用法相对简单,但其功能十分强大,包含了许多可选参数和特性,可以支持用户根据需要生成更为复杂和精确的图形。 plot函数的基本语法结构是: `plot(Y)`:当Y是一个向量时,plot函数会将Y中的数据点按顺序连接起来,形成一个折线图。 `plot(X,Y)`:当X和Y都是同长度的向量时,plot函数会将X作为横坐标,Y作为纵坐标,绘制出数据点,并将这些点通过线段相连。 `plot(X1,Y1,X2,Y2,...)`:可以同时绘制多个二维曲线,每个曲线对应一对X和Y向量。 除了基本的二维图形绘制,plot函数还支持添加线型、颜色和标记点等属性,使得生成的图形更加丰富和个性化。例如,可以通过如下方式指定线型和颜色: `plot(X,Y,'--r')`:这里'--'代表虚线,'r'代表红色,这会用红色虚线绘制出X和Y对应的折线图。 `plot(X,Y,'o')`:这里'o'代表点标记,这会用点标记来绘制出X和Y对应的散点图。 此外,MATLAB还允许用户为图形添加标题、坐标轴标签、图例等元素,进一步丰富图形的信息表达。例如: `title('我的图形标题')`:添加图形的标题。 `xlabel('横坐标标签')`:为横坐标添加标签。 `ylabel('纵坐标标签')`:为纵坐标添加标签。 `legend('数据1','数据2')`:添加图例,区分不同的数据曲线。 在实际应用中,plot函数可以与MATLAB的其他函数和功能结合使用,如使用hold on命令保持当前图形,以便在同一图形窗口中绘制多组数据;使用子图功能subplot来创建多个图形窗口;或者使用各种图形对象的属性来调整图形的风格和布局。 总之,MATLAB中的plot函数是二维图像绘图的利器,无论是用于科学研究的数据可视化,还是教学中的图形演示,都能提供强大而便捷的支持。掌握plot函数的使用,能够极大提升用户在数据处理和分析方面的工作效率。"

%继电式自整定调节器 clear; clc; %% 初值 Ts=0.001; L=300; yp=0; d=1; %% 传递函数离散化 Gs=tf(1,conv(conv([10,1],[5,1]),[2,1])); dsys =c2d(Gs,Ts,'tustin '); [num,den]=tfdata(dsys,'v'); len=length(den); %% 等幅振荡 for t=1:len-1 y(t)=0; u(t)=0; e(t)=yp-y(t); time(t)=t*Ts; end for t=len:L/Ts if e(t-1)>0 u(t)=d; else u(t)=-d; end y(t)=-den(2)*y(t-1)-den(3)*y(t-2)-den(4)*y(t-3)+num(1)*u(t)+num(2)*u(t-1)+num(3)*u(t-2)+num(4)*u(t-3); e(t)=yp-y(t); time(t)=t*Ts; end figure(1) plot(time,y,'DisplayName','y'); xlabel('时间t/s'); ylabel('输出值'); title('继电器控制下被控对象输出值'); %% 周期计算 i=1; for t=2:L/Ts if y(t)>y(t-1) t1(i)=t; i=i+1; end end i=1; for t=2:length(t1) if (t1(t)-t1(t-1))>1 t2(i)=t1(t); i=i+1; end end sum=0; for t=ceil((1/2)*length(t2))+1:length(t2) sum=sum+(t2(t)-t2(t-1)); end %% PID整定参数 Ku=4*d/(pi*max(y)); Tu=Ts*sum/(length(t2)-ceil((1/2)*length(t2))); %P控制 %Kc=0.5*Ku;Ti=0;Td=0; %Kp=Kc; Ki=0; Kd=0; %PI控制 %Kc=0.4*Ku;Ti=0.8*Tu;Td=0; %PID控制 Kc=0.6*Ku; Ti=0.5*Tu; Td=0.12*Tu; Kp=Kc; Ki=Kp*Ts/Ti; Kd=Kp*Td/Ts; %% PID控制 for t=1:len y(t)=0; u(t)=0; e(t)=yp-y(t); time(t)=t*Ts; end yp=1; for t=len:L/Ts det_u=Kp*(e(t-1)-e(t-2))+Ki*e(t-1)+Kd*(e(t-1)-2*e(t-2)+e(t-3)); u(t)=u(t-1)+det_u; y(t)=(1/den(1))*(-den(2)*y(t-1)-den(3)*y(t-2)-den(4)*y(t-3)+num(1)*u(t)+num(2)*u(t-1)+num(3)*u(t-2)+num(4)*u(t-3)); e(t)=yp-y(t); time(t)=t*Ts; end figure(2) plot(time,y,'DisplayName','y'); xlabel('时间t/s'); ylabel('输出值'); title('P控制下被控对象输出值');转成python语言

2023-06-11 上传