clc
%传递函数
G1=tf([1 3 2],[1 5 6 5])
G2=tf([1 6 7],[1 6 4 1])
G3=tf([4 7 2],[1 5 8 5])
G4=tf([6 4 2],[1 30 9 5])
G5=tf([1 80 2],[50 5 1 7])
%传递函数系数矩阵
H1=[0 1 3 2;1 5 6 5]
H2=[0 1 6 7;1 6 4 1]
H3=[0 4 7 2;1 5 8 5]
H4=[0 6 4 2;1 30 9 5]
H5=[0 1 80 2;50 5 1 7]
%求取距离
count=1;
for m1=1:5
for m2=m1:5
eval(['T1=H' num2str(m1) ';']);
eval(['T2=H' num2str(m2) ';']);
eval('DT=norm(T1-T2)/(sqrt(1+(norm(T1))^2)+sqrt(1+(norm(T2))^2));')
eval(['dt' num2str(count) ';'])
count=count+1;
end
end
x=[1 2 3 4 5 6 7 8 9 10]
x=[1:10]
y=[dt]
%最终距离图
figure(4)
plot(x,y);
hold on;
xlabel('第i个集合'); ylabel('距离');grid;
我现在想实现两个传递函数相减,代码在上面,现在提示出错了 有大佬知道吗
错误使用 eval
未定义函数或变量 'DT1'。
出错 Untitled3
eval(['dt' num2str(count) ';'])
题主想实现两个传递函数相减,运行其代码出错,其原因有
1、在for循环语句中,想求得到T1和T2的值,由于eval(['T1=H' num2str(m1) ';'])和eval(['T2=H' num2str(m2) ';'])赋值计算格式问题,所以无法得到 T1和T2的值。处理方法,应先将['H',num2str(m1)]和['H',num2str(m2)]分别赋值给str,然后用eval函数计算T1和T2的值,即
str=['H',num2str(m1)];
T1=eval(str)
str=['H',num2str(m2)];
T2=eval(str)
2、得到了 T1和T2的值,则可以计算距离值,即
DT(count)=norm(T1-T2)/(sqrt(1+(norm(T1))^2)+sqrt(1+(norm(T2))^2))
3、通过上述处理,运行程序。可以得到如下结果。