How can I turn s/s to 1?
    2 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
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
0 Kommentare
Akzeptierte Antwort
  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
Weitere Antworten (1)
  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
      
 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.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!