How can I turn s/s to 1?

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

 Respuesta aceptada

Paulo Silva
Paulo Silva el 8 de Jun. de 2011

1 voto

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 comentarios

sadel
sadel el 8 de Jun. de 2011
I have a diplay panel which displays strings like 'Plant:' and transfer functions. I use the evalc to convert handles.PID_sys to string. After this, I use strvcat to connect the string 'Plant:' and the string of the transfer function. Then , I display them on an editbox.
sadel
sadel el 8 de Jun. de 2011
I need the s symbol.
Paulo Silva
Paulo Silva el 8 de Jun. de 2011
So does my code solve your problem or not?
sadel
sadel el 8 de Jun. de 2011
Yeah, thank you!!!!
sadel
sadel el 8 de Jun. de 2011
but now there is another problem. I cannot execute the 'c2d' function with this transfer function handles.PID_sys=1 and I think because this isn't a transfer function.
sadel
sadel el 8 de Jun. de 2011
with this handles.PID_sys=tf([1],[1]); instead of this handles.PID_sys=1 is better!!! :)
Paulo Silva
Paulo Silva el 8 de Jun. de 2011
even better -> handles.PID_sys=tf(1);

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 8 de Jun. de 2011

0 votos

s/s is not generally 1. In particular, that fails for 0, infinity, -infinity, and NaN.

1 comentario

Paulo Silva
Paulo Silva el 8 de Jun. de 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.

Iniciar sesión para comentar.

Etiquetas

Preguntada:

el 8 de Jun. de 2011

Community Treasure Hunt

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

Start Hunting!

Translated by