How can I turn s/s to 1?

1 回表示 (過去 30 日間)
sadel
sadel 2011 年 6 月 8 日
I run this code and if I click yes without change anything in the inputdlg, I receive 's/s'. How can I return this to '1' in this situation?
prompt={'Proportional Coefficient Input','Integral Coefficient Input','Derivative Coefficient Input'};
defans={'1','0','0'};
answer=inputdlg(prompt,'PID Coefficient Input',1,defans,'on');
if (~isempty(answer))
if (~isempty(answer{1}))&(~isempty(answer{2}))&(~isempty(answer{3}))&(answer{1}~='0')
syms s
x1=str2num(answer{1});
x2=str2num(answer{2});
x3=str2num(answer{3});
handles.pid(1)=x1(1);
handles.pid(2)=x2(1);
handles.pid(3)=x3(1);
handles.PID_num=[handles.pid(3),handles.pid(1),handles.pid(2)];
handles.PID_den=[1,0];
handles.PID_sys=tf(handles.PID_num,handles.PID_den);
evalc('handles.PID_sys')
end
end

採用された回答

Paulo Silva
Paulo Silva 2011 年 6 月 8 日
prompt={'Proportional Coefficient Input','Integral Coefficient Input','Derivative Coefficient Input'};
defans={'1','0','0'};
answer=inputdlg(prompt,'PID Coefficient Input',1,defans,'on');
if (~isempty(answer))
if (~isempty(answer{1}))&(~isempty(answer{2}))&(~isempty(answer{3}))&(answer{1}~='0')
syms s
x1=str2num(answer{1});
x2=str2num(answer{2});
x3=str2num(answer{3});
handles.pid(1)=x1(1);
handles.pid(2)=x2(1);
handles.pid(3)=x3(1);
handles.PID_num=[handles.pid(3),handles.pid(1),handles.pid(2)];
handles.PID_den=[1,0];
handles.PID_sys=tf(handles.PID_num,handles.PID_den);
[num,den] = tfdata(handles.PID_sys);
if(num{:}==den{:})
handles.PID_sys=1;
end
evalc('handles.PID_sys')
end
end
  7 件のコメント
sadel
sadel 2011 年 6 月 8 日
with this handles.PID_sys=tf([1],[1]); instead of this handles.PID_sys=1 is better!!! :)
Paulo Silva
Paulo Silva 2011 年 6 月 8 日
even better -> handles.PID_sys=tf(1);

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2011 年 6 月 8 日
s/s is not generally 1. In particular, that fails for 0, infinity, -infinity, and NaN.
  1 件のコメント
Paulo Silva
Paulo Silva 2011 年 6 月 8 日
that's why the tf leaves the results the way it does, I never seen the s/s situation before, always had transfer functions with more poles than zeros, sometimes it's good to be here trying to help others, we always learn new things.

サインインしてコメントする。

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by