2013-02-01 70 views
0

当在MATLAB中使用tf函数时,我没有得到我需要的输出。Matlab,配置TF输出(传输函数)

例如:

tf(1 , [1 1 1]) 

产地:

ans = 

     1 
----------- 
    s^2 + s + 1 

连续时间的传递函数。

我希望是这样的:

ans = 
    1/(s^2 + s + 1). 

我不想漂亮的格式。我想直接访问传输功能。

回答

1
f = tf(1 , [1 1 1]) 

将在f中返回TF对象。

+0

不,你不明白。做你说的话对我没有好处。即使有f = tf(1,[111]),我得到的全部是 f = ----------- s^2 + s + 1 我需要f = 1 /(s^2 + s + 1) –

+0

@ user2033840您想要访问实际的传输函数还是希望它显示为1 /(s^2 + s + 1)? – Bitwise

+0

刚刚显示为。我想要一个函数或脚本,当它应用到上述变量f = tf(1,[1 1 1])时,给出输出1 /(s^2 + s + 1)。 有这样的事吗?还是类似的东西? –

1

在控制工具箱中修改printsys.m文件。删除disp([' ','-'*ones(1,len)])行以删除该行并使用单个disp命令打印分子和支配者。

0

我遇到了同样的问题,找不到满意的解决方案,所以我写了自己的。

这是非常简单的随意使用它,无论如何你希望。

下面的函数应放在tf2string.m

% name: tf2string.m 
% author: vittorio alfieri 

% example: 
% W1_out=tf2string(W1) 
% 
% W1_out = 
% (s + 37.0)/(1.646*s) 

function output_string = tf2string(input_tf) 

syms s 

sym_num=poly2sym(input_tf.num{:},s); 
sym_num=vpa(sym_num, 4); 
char_num=char(sym_num); 

sym_den=poly2sym(input_tf.den{:},s); 
sym_den=vpa(sym_den, 4); 
char_den=char(sym_den); 

output_string = ['(', char_num, ')/(', char_den, ')']; 
s=tf('s'); 

-Vittorio