% --- Ayuda del script "diagramas" --- % % - Ejecute el script ecribiendo "diagramas" en la línea de comandos de % matlab. Para eso el script debe estar ubicado en el "path" de matlab % o en el directorio de trabajo. Para saber el directorio de trabajo % escriba "pwd" en la línea de comandos. % % - Ingrese la función de transferencia en función de la variable "s" o % "p". % % - Ingrese un nombre para el ejercicio. El programa va a crear una % carpeta llamada "html" en el directorio de trabajo (pwd) y ahí % adentro va a guardar un informe html con el nombre que ingresó. % % Ejemplo: % >>diagramas % T(p)=1/(p^2+3*p+1) % Un nombre para el ejercicio: ejemplo % % El código de arriba va a generar los siguientes archivos: % .\html\ejemplo.html % .\html\ejemplo.jpg % Y va a abrir el html en el explorador predeterminado. % % Para mostrar esta ayuda escriba (en la línea de comandos de matlab): % >>help diagramas % % Cualquier error o sugerencia postear en: % http://www.danielmunoz.com.ar/blog/2009/12/01/funcion-de-tra…cia-con-matlab/ syms p s; ftransf=input('T(s)='); ancho=840; alto=0.75*ancho; carpeta='html';%input('Guardar en carpeta: ','s'); [s,mess,messid]=mkdir(carpeta); ref=input('Un nombre para el ejercicio: ','s'); [fi,mensaje]=fopen(sprintf('%s\\%s.html',carpeta,ref),'w'); if fi==-1 disp(sprintf('Error al crear el archivo %s: %s',ref,mensaje)); end html=sprintf('\r\nFunción de Fransferencia - %s\r\n\r\n\r\n

Informe de la Función de transferencia (%s)

\r\n

Función de transferencia

\r\n\r\n',ref,ref,ref); texto=sprintf('$$T(%s)=%s$$',findsym(ftransf),latex(sym(factor(ftransf)))); fprintf(fi,'%s',html); fclose(fi); close(gcf); h(1)=figure('color','white','units','pixels','position',[100 100 ancho 100]); axis off h(2) = text('units','pixels', 'position',[0 40],'fontsize',14, 'interpreter','latex', 'string',texto); F(1)=getframe(h(1)); close(h(1)); [num,den]=numden(ftransf); num=sym2poly(num); den=sym2poly(den); Ftr=tf(num,den); nyquist(Ftr); grid on; set(gcf,'Position',[5 40 ancho alto]); title('Diagrama de Nyquist'); xlabel('Eje Real'); ylabel('Eje Imaginario'); F(2)=getframe(gcf); close(gcf); bode(Ftr); grid on; set(gcf,'Position',[5 40 ancho alto]); title('Diagrama de Bode'); xlabel('Frecuencia'); F(3)=getframe(gcf); close(gcf); w=1i.*[0 logspace(-2,2,100) 1000000]; Fw=subs(ftransf,w); polar(phase(Fw),abs(Fw)); set(gcf,'Position',[5 40 ancho alto]); title('Diagrama Polar'); F(4)=getframe(gcf); close(gcf); F(5)=F(1); F(5).cdata(101:alto+100,1:ancho,1:3)=F(2).cdata; F(5).cdata(alto+101:2*alto+100,1:ancho,1:3)=F(3).cdata; F(5).cdata(2*alto+101:3*alto+100,1:ancho,1:3)=F(4).cdata; [X,Map]=frame2im(F(5)); imwrite(X,sprintf('.\\%s\\%s.jpg',carpeta,ref),'jpg'); url=sprintf('%s\\%s\\%s.html',pwd,carpeta,ref); winopen(url);