这个应该不难,matlab有个subplot函数是将几个函数图像进行分幅,举例:>> x=-pi:0.1:pi
>> y1=x.^2;
>> y2=x.^3;
>> y3=x.^4;
>> subplot(1,3,1)%进行分幅处理
>> plot(x,y1)第一幅打印y1=x.^2(点积是因为x属于一行多列的数组,不是x^2,因为x非方阵)
>> subplot(1,3,2)
>> plot(x,y2)第二幅打印y2=x.^3
>> subplot(1,3,3)
>> plot(x,y3)第三幅打印y1=x.^4
很遗憾呀,我不能上传图片,反正这个函数可以用来分幅。完成分幅后,如果还觉得不满意,则用木画图工具修改裂块就行。应该很简单了,不会看不懂吧!
2种方法,
1. 将每个循环中生成的数据分别存起来,等循环结束后使用plot(sys1, sys2, ...)来同时画多张图;
2. 将曲线的颜色、线型写成矩阵,然后在每个循环中利用矩阵变量来使每张图具有不同的颜色等属性。
第二种方法,Matlab代码如下:
a_color = ['r', 'g', 'b', 'y', 'c', 'm', 'k']; %定义图形颜色
a_line_point = ['.', 'o', 'x', '+', '*', 's', 'd']; %定义点的形状
%a_line_style = ['-', ':', '-.', '--']; %定义线形,(none) no line
count=4:2:10;
for idx = 1 : length(count)
p3 = count(idx);
p4 = count(idx);
A_cl = conv([1 4 8], conv([1 p3], [1 p4]));
% 计算控制器C(s)的待定系数
A = [0 0 5 1; 0 5 -5 -4; 5 -5 0 -5; -5 0 0 0];
B = [A_cl(2)+4;A_cl(3)+5;A_cl(4);A_cl(5)];
X = inv(A)*B;
p_0 = X(1);
p_1 = X(2);
p_2 = X(3);
l_0 = X(4);
% 得到控制器C(s)
a1=[p_2 p_1 p_0];
b1=[1 l_0 0];
c = tf(a1,b1);
% 计算控制对象的nominal transfrom function P0(s)
a2=[5 -5];
b2=[1 -4 -5];
p = tf(a2,b2);
%计算闭环传递函数
% Define the complementary sensitivity functions(close-loop transform function)
sys1 = c*p;
T_o = feedback(sys1,1);
%绘制闭环传递函数的阶跃响应
figure(1);
step(T_o, a_color(idx)); %利用矩阵变量来使每张图具有不同的颜色等属性
%step(T_o, strcat(a_color(idx), a_line_point(idx), '-')); %添加点的不同表示
name = strcat(a_color(idx), ': p_{3,4}=', num2str(p3));
title('Unit Step Response');
text(3, 6-idx, name);
axis([-0.1 3.6 -6 +6]);
grid on;
hold on
%绘制闭环系统的control input
S_uo = feedback(c,p);
figure(2);
step(S_uo, a_color(idx)); %利用矩阵变量来使每张图具有不同的颜色等属性
name = strcat(a_color(idx), ': p_{3,4}=', num2str(p3)); title('Control Input');
text(1.8, 50-5*idx, name);
axis([-0.1 2 -30 +50]);
grid on
hold on
end
自动生成?