How can I turn s/s to 1?

1 Ansicht (letzte 30 Tage)
sadel
sadel am 8 Jun. 2011
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

Akzeptierte Antwort

Paulo Silva
Paulo Silva am 8 Jun. 2011
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 Kommentare
sadel
sadel am 8 Jun. 2011
with this handles.PID_sys=tf([1],[1]); instead of this handles.PID_sys=1 is better!!! :)
Paulo Silva
Paulo Silva am 8 Jun. 2011
even better -> handles.PID_sys=tf(1);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 8 Jun. 2011
s/s is not generally 1. In particular, that fails for 0, infinity, -infinity, and NaN.
  1 Kommentar
Paulo Silva
Paulo Silva am 8 Jun. 2011
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.

Melden Sie sich an, um zu kommentieren.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by