求教大佬们一个关于matlab的问题

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、通过上述处理,运行程序。可以得到如下结果。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网