题目:
书面解答:
MATLAB代码:
clear all;
format long;
in_k=(0:1:100)';
in_value1=0.5*ones(101,1);
in_value2=0.5*ones(101,1);
open_system('model_1_25_6');
out=sim('model_1_25_6.slx');
out1=get(out,'out1');
out2=get(out,'out2');
out3=get(out,'out3');
out4=get(out,'out4');
figure();
plot(in_k,out3-out1-out2);
xlabel('k');
ylabel('out3-out1-out2');
title('1.25(6)题-验证线性');
hold on;
figure();
plot(in_k(1:length(in_k)-1),out4(2:length(out4))-out1(1:length(out1)-1));
xlabel('k');
ylabel('out4-out1');
title('1.25(6)题-验证时不变性');
simulink仿真验证:
变量说明:
in_k:自变量k,即离散的时钟
in_value1:f1(k),即激励输入1
in_value2:f2(k),即激励输入2
out4:f1(k-1)*(k-2),延迟激励1的输入时间对应的响应,用于验证时不变性
out3:[f1(k)+f2(k)]*(k-2),激励1和激励2线性叠加对应的响应信号输出,用于验证线性
out2:f2(k)*(k-2),激励2对应的响应信号
out1:f1(k)*(k-2),激励1对应的响应信号
用MATLAB和simulink系统验证系统时不变性和线性原理和代码原理说明:
1、线性(理论)
1、线性(代码)
open_system('model_1_25_6');
out=sim('model_1_25_6.slx');
out1=get(out,'out1');
out2=get(out,'out2');
out3=get(out,'out3');
out4=get(out,'out4');
figure();
plot(in_k,out3-out1-out2);
xlabel('k');
ylabel('out3-out1-out2');
title('1.25(6)题-验证线性');
hold on;
说明:利用绘制的图像即验证等式左右两边是否相等。
·如果相等:图像为直线y=0;
·如果不等:图像震荡不为0
结果图像:
图像为直线y=0,即系统是线性。
2、时不变性(理论)
2、时不变性(代码)
figure();
plot(in_k(1:length(in_k)-1),out4(2:length(out4))-out1(1:length(out1)-1));
xlabel('k');
ylabel('out4-out1');
title('1.25(6)题-验证时不变性');
·此处代码原理:
一、利用了逐差法,
即
=
来验证是否满足:
二、代码
(out4(2:length(out4))-out1(1:length(out1)-1))
·代码中将取了out4第二位开始到最后一位,out1从第一位到倒数第二位。这是因为out4本就是f1(k)进行时间延迟1个单位的结果,取out4的第二位开始,与out1的第一位进行比较,等价于在同一个时间单位上进行比较,举例:
结果说明:
同理,如果时不变,则图像为y=0直线,否则震荡。
结果截图:
分析说明:此系统不是时不变系统,因为图像为y=0.5的直线,说明二者并不相等,而是有0.5的延迟差值。
总结:
希望有专业的小伙伴一起交流,指正,感谢!