Comandos útiles para matlab
Edit me

setting path at startup

search path at startup

Commands

Dimensionado de gráficas

%scrsz = get(0,'ScreenSize'); en pixeles
... tipo centimeter normalized
left=1; bottom=1; width=20;  height=10;
figure('units','centimeter','Position',[left, bottom, width, height]);
fprint-sprintf

Setting Screen

set(0,'units','centimeters')
get(0,'MonitorPosition')
get(0,'ScreenSize')
fprintf(lineSec,'a','Nombre Bloques');
disp(blks); pause (2); 
 for n=1:length(Tag_blck),  
    title=strcat(Tag_blck{n},'=> ',num2str(blks_pos{n}));
    fprintf('%s \n',title);
end

Position==[left bottom width height]; 
sprintf('%c',char(245)); tic
U=1*exp(2*i*pi*50); 
    disp('U'); 
I=0.5*exp(-i*2*pi*50); 
    disp ('I')
S=U*conj(I); toc ; tic; 
    fprintf('%d \n',S); toc; tic; disp (S); toc

no imprime variables

tic; sprintf(‘%d \n’,S) ;toc

Mejor opcion para desplegar lineas

tic; fprintf('%c',char(frame01));
fprintf('\n'); 
sprintf('%c',char(frame01)),sprintf('\n');toc

### Adaptacion de pc/folder en matlab

```cmd
addpath('D:\MTLB\bin\MyComputePrg\Sags'); 
addpath('D:\MTLB\bin\MyComputePrg\sourceVabc'); 
addpath(genpath('D:\THESIS\CODE\Matlab\sysREE\rev1'))

SIZE SCREEN

scrsz = get(0,'ScreenSize'); en pixeles
... tipo centimeter normalized
left=1; bottom=1; width=20;  height=10; 
figure('units','centimeter','Position',[left, bottom, width, height]);

OTHERS

get(gcf,'Position');
set(gcf,'Units','centimeters');

CONOCER EL TAMAÑO DE CADA MONITOR

get(0,'MonitorPosition')

Para imprimir al tamaño deseado

set(gcf, 'PaperUnits', 'centimeters');
width = 15;   height = 15;        
set(gcf, 'PaperSize', [width height]);
papersize = get(gcf, 'PaperSize');       
left = (papersize(1)- width)/2;        
bottom = (papersize(2)- height)/2;       
myfiguresize = [left, bottom, width, height];        
set(gcf, 'PaperPosition', myfiguresize);

Para imprimir al tamaño deseado

set(gcf, 'PaperUnits', 'centimeters');
width = 15;   height = 15; 
set(gcf, 'PaperSize', [width height]);
papersize = get(gcf, 'PaperSize');
left = (papersize(1)- width)/2;
bottom = (papersize(2)- height)/2;
myfiguresize = [left, bottom, width, height];
set(gcf, 'PaperPosition', myfiguresize);
set(gcf,'Units','centimeters','Position',[4,14,15,10]);
set(gcf, 'PaperUnits', 'centimeters','PaperSize',[15,10],...
'PaperPosition',[0,0,15,10]);

PLOTS

%print -dpdf Intensidad_sag_ang.pdf;  pause(1); clf; close;
%winopen  'Intensidad_sag_ang.pdf'
%print -depsc Intensidad_sag_ang.eps; % pause(1); clf; close;
winopen  'Intensidad_sag_ang.eps'     
%copyfile('Intensidad_sag_ang.eps',destine)
    pause(2); close all;

Para ponerle nombre a una figura

  
  figure('name','Ic-Vdip <-> Angulo de carga variando'); hold on
    %set(figH,'Name','something else','NumberTitle','off') 
```cmd
  
    Esto es la mejor opcion en tiempo de computo<code>
```cmd
    tic;disp(sprintf('%c',char(frame01)));toc

Datos de numero a letras

    num2str(SG1(1:3,1)

Formato pdf: existen 2 formas

a) usando un comando de linea, pero habria que darle el tamaño especifico
b) imprimiendo en eps y pasandolo a pdf usando un archivo en ubuntu para esta conversion formato eps: print -deps NameFile Formato de impresion pdf o eps

CONFIGURATION PLOTS:

    iLocLeg='EastOutside'; ColorLine=[0 0 0]; StyleLine='.-|--|-.|:';  
    set(gcf,'DefaultLineLineWidth',1.5) set(gcf,'DefaultAxesColorOrder',ColorLine,...       
    'DefaultAxesLineStyleOrder',StyleLine)  
    iFontSize=14; iLineWidth=2; jFontSize=15; strFontName='Arial';
    set(gcf,'Defaultaxesfontsize',jFontSize,...     
    'DefaultAxesFontName','strFontName',... 'DefaultAxesFontUnits','centimeters');  
    %---PutNameAxes OBJ01='xlabel(strXlabel);ylabel(strYlabel)'; 
    %---PutSize/Type_Letter_atLATEX prop01='FontSize'; prop02='Interpreter'; INprop02='latex'; propA='XLabel'; propB='YLabel'; OBJ02='set(get(gca,propA),prop01,iFontSize,prop02,INprop02)'; OBJ03='set(get(gca,propB),prop01,iFontSize,prop02,INprop02)';  %----

Colocar legendas en graficas

     OBJ05='legend(strLegend)'; propE='type';  
     propF='text'; OBJ06='set(findobj(lgOBJ,propE,propF),prop01,jFontSize,prop02,INprop02)';

Color y localizacion de las etiquetas

     propG='boxoff'; propH='Location'; propI='edgecolor'; propJ='none';
     OBJ07='legend(propG,propH,iLocLeg,propI,propJ)'
     [num, txt, raw] = xlsread('CASOIIF.XLS') 
     wnd=num(:,1);
     windFILTER
     figure(1);
     rng default;%x=ecg(500)'+0.25*randn(500,1); 
     
     %noisy waveform     %{ 
     xWND=[wnd;wnd] h=fdesign.lowpass('Fp,Fst,Ap,Ast',0.15,0.2,1,60);
     d=design(h,'equiripple'); 
     %LowpassFIRFILTER 
     WNDfltr01=filtfilt(d.Numerator,1,xWND);
     %zero-phaseFILTER WNDfltr02=filter(d.Numerator,1,xWND);
     %conventionalFILTER  subplot(321);
     plot([WNDfltr01 WNDfltr02]);
     title('señales filtradas');
     legend('FILTRADO FASE-CERO','FILTRADO TRADICIONAL');%} 
     xWND=[wnd];  %subplot(211);  
     h=fdesign.lowpass('N,F3dB',12,0.15);  
     d1=design(h,'butter'); 
     WNDfltr03=filtfilt(d1.sosMatrix,d1.ScaleValues,xWND);  
     strYlabel='\bf{Viento (Medidas) [m/s]}'; 
     strXlabel='\bf{Tiempo [horas]}'; 
     strLegend={'Medici\''on sin tratar','se\~nal filtrada'};  
     %plot(tm,P1_24hrs,'og',tm,P2_24hrs,'sr',tm,P3_24hrs,'^b',tm,P4_24hrs,'*k'); 
     plot(xWND,'k-.'); hold on; plot(WNDfltr03,'r','linewidth',2); 
     %legend('MEDICION SIN TRATAR','SEÑAL FILTRADA','location','NorthEast'); 
     cy = get(gca,'xtick');  
     %set(gca,'xticklabel',[]); 
     set(gca,'xticklabel',cy/10);  
     eval(OBJ01); eval(OBJ02); eval(OBJ03); lgOBJ=eval(OBJ05);  eval(OBJ06);  eval(OBJ07); 
     axis([0 240 7.5 12.5]);grid on  
     %PRINT set(gcf,'PaperUnits','centimeters','PaperOrientation','landscape',...     
     'PaperType', 'A5'); pprsz=get(gcf, 'PaperSize'); 
     [wdth hght]=deal(20,14.5); 
     [lft,bttm]=deal((pprsz(1)-wdth)/2,(pprsz(2)-hght)/2); 
     set(gcf,'PaperPosition',[lft,bttm,wdth,hght])  
     nmFL='filtradoWND.pdf'; print('-dpdf',nmFL); 
     winopen(nmFL)

Para saber que formato utilizar para desplegar datos por pantalla u archivo

http://www.mathworks.es/help/techdoc/ref/fprintf.html

Exportar a latex

http://www.mathworks.es/help/techdoc/matlab_env/f6-30186.html

Tipos lineas

     --: trazado lineal discontinuo 
     g: verde oscuro (green)  
     -.: trazado lineal discontinuo intercalando punto y línea 
     k: negro (black)  
     : : trazado con línea de puntos 
     m: rojo oscuro (magenta) 
     *: marca * r: rojo (red) 
     +: marca 
     + w: blanco (white) 
     o: círculo 
     y: amarillo (yellow) 
     x: marca con un aspa 
     .: un punto 
     b: azul (blue) 
     c: verde claro (cyan  '-^b' '-.r' 

Tipo de Datos

A) ACCESO DATOS 
1) cell       koman2:  NameCell{n_cell}  
2) Numeric Arrays       
koman2:  NameCell{n_cell} B = [12, 62, 93, -8, 22; 16, 2, 87, 43, 91; -4, 17, -72, 95, 6]  
2) Character Strings myString = 'Hello, world';  

A) ADMINISTRACION DATOS 
1) Importación Datos   load: Números separados por espacios-> matriz  Puede cargar desde ficheros .mat o ASCII  
load ('fichero .mat' [, var1, var2, varN ])  
load('fichero ascii') %carga matrix de números  

csvread → Hojas de cálculo        
dlmread → Números, cualquier separador  t
extread → para leer celdas, varios tipos   
textscan → Más complejo y potente que textread  
xmlread → Formatos XML → Document ObjectModel  Exportación de datos  
save: Guarda datos para ser cargados con load  
save ('fichero', variables...)  csvwrite  
dlmwrite → Números, cualquier separador  
xmlwrite → Guarda en formato XML 

Uso general de ficheros
1.Abrir: fopen 
2.Lectura y escritura: fload, fwrite, fread, fscanf, fprintf... 
3.Cerrar: fclose, Hay que comprobar posibles errores al operar con ficheros  
Alternativas: Matlab(simple) y estilo C (potente)  
[fid, msg]=fopen('nombre', 'modo') 
-Modo: 
- 'r' → fichero existente para lectura 
- 'w' → escritura, borra el contenido previo 
- 'a' → escritura, añadiendo al final del fichero 
- 'r+' → fichero existente, lectura y escritura 
- 'w+' → lectura y escritura, borrando el contenidoprevio 
- 'a+' → lectura y escritura, al final del fichero   
fprintf(fid, 'formato', variables...) 
- Escribe las variables en el fichero siguendo el formato indicado 
- Si se omite fid escribe en pantalla 
- Formato: cadena de conversión estilo 
C - %d %i: Decimal con signo - %o %u, %x: octal, sin signo, hexadecimal, 
- %E,e: Double precisión, notación [-]d.ddddE(+|-)dd 
- %f: [-]ddd.ddd; %g: usa %e o %f según el caso 
- %s: cadena de caracteres Lectura y escritura 
- Longitud y decimales: %l.d antes del modificador 
- Delimitadores - \n: salto de linea - \r: retorno de carro 
- \t: tabulador - \b: retroceso (backspace) 
- \\: para imprimir \ (carácter de escape)  Lectura 
- A= fscanf (fid, 'formato') -v=fscanf(fid, '%g') → Lee todo el fichero, numero a numero, volcandolo en el vector v 
- [A, leidos] = fscanf(fid, 'formato', dimension) 
- Leidos= leidos correctamente - Dimension 
- n= n elementos en un vector columna 
- inf=todos los elementos 
- [M, N] Rellena la matriz MxN por columnas. N puede ser inf Lectura por lineas linea=fgetl(fid) → lee linea a linea (sin guardar \n). 
-1 si llega al final de fichero (se puede comprobar con ~ischar(linea) 
- fgets(fid) → lee la siguiente linea, incluyendo \n 
- fgets(fid, nchar) → lee nchar caracteres máximo de la siguiente linea  

Formato de numeros Orden de MATLAB Comentarios Ejemplo 
format long  format short 16 dígitos  visualización por defecto 35.83333333333334  35.8333 
format short e 5 dígitos más exponente 3.5833e+01 
format long e 16 dígitos más exponente 3.583333333333334e+01 
format hex hexadecimal 4041eaaaaaaaaaab 
format bank 2 decimales 35.83 format + signo + format rat aproximación racional 215/6  

La orden digits(n)cambia el número de dígitos de precisión que se usa por defecto en la toolbox.  
La orden digits nos permite conocer cual es el valor de este número.  
La orden vpapermite realizar un cálculo y mostrar su resultado con una precisión especificada  sin cambiar el número de dígitos de precisión con el que se trabaja por defecto.  
source "http://www.nebrija.es/~mjgarbayo/seminario_matlab/matlab2.html" 

### Matlab to latex

%url=http://pundit.pratt.duke.edu/piki/index.php?title=MATLAB:LaTeX_Table_Writer&oldid=9734

    s = sym(L);  
    v = vpa(s,5); 
    # assign numerical precision  
    latex(v)             
    TC = [-273.15 -40 0 100]';   
    TK = TC + 273.15;             
    TF = (TC+40)*9/5-40;             
    TR = TF + 459.67;              
    for k=1:length(TC)                 
    fprintf('%8.2f & %8.2f & %8.2f & %8.2f \\\\ \n', TC(k), TK(k), TF(k), TR(k))             
    end                          
    for k=1:length(TC)                 
    fprintf('%8.2f & %8.2f & %8.2f & %8.2f \\\\ \\hline  \n', TC(k), TK(k), TF(k), TR(k))             
    end                          
    
    FID = fopen('file.tex', 'w')             
    for k=1:size(MainMat, 1)                 
    fprintf(FID, '%8.2f & %8.2f & %8.2f & %8.2f \\\\ \n', TC(k), TK(k), TF(k), TR(k))             
    end             
    fclose(FID)                          
    
    FID = fopen('file.tex', 'w');             
    fprintf(FID, '\\begin{tabular}{|rrrr|}\\hline \n');             
    fprintf(FID, 'T ($^{\\circ}$C) & T (K) & T ($^{\\circ}$F) & T ($^{\\circ}$R)\\\\ \\hline \n');             
    
    for k=1:length(TC)                 
    fprintf(FID, '%8.2f & %8.2f & %8.2f & %8.2f \\\\ ', TC(k), TK(k), TF(k), TR(k));                 
    if k==length(TC)                     
    fprintf(FID, '\\hline ');                 
    end                 
    fprintf(FID, '\n');             
    end                           
    fprintf(FID, '\\end{tabular}\n');             
    fclose(FID);  %\begin{center} %\input{file.tex} %\end{center} 

### CONFIGURACION EDITOR

El tipo de letra para el editor: consolas Colores para el Editor 
Azul -> RGB[0,255,204]  %Azul muy padre tirando pa verde :-D tipos de verdes       
verde-amarillo [189 221 150]       
verde-azul-suave [130,239,178]        
codigo ascii de caracteres utiles       
0xAE -- flecha       U+219 --- Flecha okis       para saber el # ascii       
clc;for n=126:1:255;disp([char(n) num2str(n)]);end 

Customer fonts  toNUMBERS- muy visible: Dialog MS reference Sans 
Serif palatino Linotype Miriam FIxed  Lucida Compacta: Iskoola Pota       

Coordenadas Polares

%PolarCoordinates

    angTHT= 0:0.01:2*pi; 
    rdR = sin(2*angTHT).*cos(2*angTHT); 
    [xX,yY]=pol2cart(angTHT,rdR); 
    figure;plot(xX,yY) 
    figure; polar(angTHT,rho,'--r')

Multiples salidas matlab

para sacar muchos datos de otra funcion
    function[varargout]=ComputePointEq(sys,u_r0,u_s_eq,P_eq,Q_eq,varargin) 
    options=optimset('Display','off'); 
    %Solve system of nonlinear equations 
    u_r_eq=fsolve(@(u_r)kk(u_r,sys,u_s_eq,P_eq,Q_eq),u_r0,options);  
    u=[u_s_eq;u_r_eq];  
    x_eq=(eye(4)-sys.A)\(sys.B*u); 
    varargout{1}=u_r_eq; 
    varargout{2}=x_eq; 
    end

LoadDatas

Para cuando leemos los datos a partir de un file*.mat 
    nmFL='datas.mat'; load(nmFL) 
    vars1=whos('-file',nmFL) 
    load(nmFL,vars1.name)
    %d=load('nmFL','-regexp','x0',) 
    dato=importdata(nmFL) %dato.Y.Data %-- dato.X.Data --time %-- dato.Y.Name -- Esto esta padre pa saber que es cada dato nmDATA=dato.Y(1).Name,  
    subplot(211); 
    plot(dato.X.Data,dato.Y(4).Data,dato.X.Data,dato.Y(5).Data); 
    legend('Pmed','Pref') subplot(212); 
    plot(dato.X.Data,dato.Y(6).Data,dato.X.Data,dato.Y(7).Data); 
    legend('Qmed','Qref') 

reducir NumDatos

Util para cuando tienes medidas
    tic %--- reduciendo datos       
    Y1=output_discreto(:,1);       
    Y2=output_discreto(:,2);       
    U1=input_discreto(:,1);       
    U2=input_discreto(:,2);       
    n=3;       
    for i=1:1:n           
        Y1(1:2:end,:)=[];           
        Y2(1:2:end,:)=[];           
        U1(1:2:end,:)=[];           
        U2(1:2:end,:)=[];           
        t_stm(1:2:end,:)=[]; 
    end 

Info matlab web;

http://www.mathworks.es/help/techdoc/ref/f16-42340.html#f16-6755     
http://www.mathworks.es/help/techdoc/ref/f16-42340.html

### Conocer las propiedades de un objeto
    whos objeto, 
    whos T5_par
    string => character array <!-- -->  

PROGRAMACION BASICA

listfonts 

FNCanonimous

http://blogs.mathworks.com/loren/2013/01/10/introduction-to-functional-programming-with-anonymous-functions-part-1/ 
    c=@(a, b, theta)
    sqrt(a.^2+b.^2-2*a.*b.*cos(theta)) 
    MaxMin=@(x) [min(x), max(x)];  
    MaxMin(2) ans =     2     2 
    [extremo,idx] = cellfun(@(f) 
    f([3 4 1 6 2]), {@min, @max}) 
    min_and_max = @(x) 
    cellfun(@(f) f(x), 
    {@min, @max}); 
    y = randi(10, 1, 10) 
    
    just_values  = min_and_max(y) 
    [~, just_indices]  = min_and_max(y) 
    [extrema, indices] = min_and_max(y) 
    mapc = @(val, fcns) 
    cellfun(@(f) f(val{:}), fcns, 'UniformOutput', false); mapc({pi}, {@(x) 2 * x, ...  
    % Multiply by 2             @cos, ...
    % Find cosine             @(x) sprintf('x is %.5f...', x)})   
    % Return a string MIO: mapc=@(val,fcns) cellfun(@(f) f(val{:}),fcns,'UniformOutput',false); oxx=mapc({230}, {@(x)x*sqrt(2/3),@cos,@(x) sprintf('x is %.5f...', x)})   </code>  

Integrales

http://www.cs.cmu.edu/~tom/10601_fall2012/recitations/matlab_quickref.pdf 

Inline function

    f1=inline(’1./(2*x.^3-2*x-5)’); 
    Q=quad(f1,0,2); 
    f2=@(x)1./(2*x.^3-2*x-5);
    Q=quad(f2,0,2);

Edit Folders, Filese

   movefile('source','destination')

function symbolicas

 si se usa una funcion simbolica se puede  substituir valor con **subs**

STRINGS

     a = 'hello  ';      
     b = 'goodbye';     
     using_strcat = strcat(a, b)     
     using_arrayop = [a, b]      
     % Equivalent to horzcat(a, b)      

MATLAB returns

    using_strcat =hellogoodbye     
    using_arrayop =hello  goodbye     

alfabeto griego en latex para matlab String Evaluation eval, feval

Multiplicacion matrices

    clear all; close all; clc 
    %% multiplicacion Matrix %a(mn) syms a11 a12 a13 %a11...a1n 
    syms a21 a22 a23  
    syms a31 a32 a33 %am1..anm %b(np) 
    syms b11  %b11...b1p syms b21   
    syms b31  %bn1..anp  
    A=[a11,a12,a13;... a21,a22,a23;... a31,a32,a33]; 
    %am1..anm B=[b11;b21;b31]; 
    C=A*B 

MATRIX

Para sumar los elementos de una matrix

[baseMVA, bus, gen, branch] = loadcase(casefile);     % obtener el vector de las potencias      
P=bus(:,3);    Q=bus(:,4);     
PQ=bus([1:4],[3 4]) %submatrix elementos donde se interseptan filas 1,4  y columnas 3,4     
% en la primera prueba usamos todas la potencias para que sea la total     
Pt_test1=sum(P,1) % 1 es para que sume en vertical     
Qt_test1=sum(Q,1)% 1 es para que sume en vertical     
PQ_1=sum(PQ,1)     % en la segunda prueba solo emplearemos las 3 primeras cargas     
PQ_tst2=bus([1:3],[3 4])%submatrix elementos donde se interseptan filas 1,3  y columnas 3,4     
PQ_2=sum(PQ_tst2,1)       

VECTORES

dot-product of two vectors – norm(V) cross computes the cross product of two vectors in R3.

ATAJOS KOman2

  • Para seleccionar matlab con el tabulador
  • Para seleccionar en la barra superior Alt+ F E V b D W H

Abrir archivos de un pc remoto:

    strcat(old_dir,'\',NameFile) & en el path colocar `\tsclient\D)`

Carpeta destino

    NameFolderChildren='sub01'   
    copyfile('source','destination')     
    NameFolderChildren='sub01'    
    NameFile='dt_2G_8buses.m'           
    source=strcat(old_dir,'\',NameFile)           
    destino=strcat(old_dir,'\',NameFolderChildren,'\',NameFile)
    copyfile(source,destino)

MOVER FILE

    NameFile='datos_fglongatt.m'   
    source=strcat(old_dir,'\',NameFile)   
    destino=strcat(old_dir,'\',NameFolderChildren,'\',NameFile)   
    movefile(source,destino)

Function anonymous:

    A = [2 3 4];<br>B = [5 6 7];       
    sumAxBy = @(x, y) (A*x + B*y);       
    sumAxBy(5, 7) 

Code performance - persistent function

     checkcode('filename')  
     Inilation variables  function 
     q = fcnPersist1(u) % fcnPersistent creates and uses a persistent 
     variable. persistent y; 
     
    if isempty(y),    
        y = u;
        else,    
        y = y+1;<br> 
    end 
      q = y;

FOR-CICLOS:

        syms a11 a12 b21 b22              
        A=[a11;a12];              
        B=[b21;b22];             % mover               
        for i=1:1:2;               
        for j=1:1:2;              
        fprintf('i=%d j=%d \n',i,j)                
        C(i,j)=A(i)*B(j);              
        fprintf('Matrix C \n');               
        disp(C); pause(1)             
        end           
        end 

CARPETA DESTINO & MOVER FOLDER

    old_dir=pwd; 
    NameFolderChildren='sub01'        
    copyfile('source','destination')       
    NameFolderChildren='sub01';       
    NameFile='dt_2G_8buses.m'       
    source=strcat(old_dir,'\',NameFile)       
    destino=strcat(old_dir,'\',NameFolderChildren,'\',NameFile)       
    copyfile(source,destino)

About Matlab Commands

Ecuaciones simbolicas


%{
L=zeros(5); %L(i,j)=(fila,columna)  
L(1,1)=d.Ld;       L(1,2)=d.Lad;     L(1,3)=d.Lad;
L(2,1)=d.Lad;     L(2,2)=d.Lffd;      L(2,3)=d.Lfkd;
L(3,1)=d.Lad;     L(3,2)=d.Lfkd;   L(3,3)=d.Lkkd;
L(4,4)=d.Lq;       L(4,5)=d.Laq;
L(5,4)=d.Laq;    L(5,5)=d.Lkkq;
%}

syms id ifd ikd iq ikq i0
syms Ld Lmd Lq Lmq Lls Lff Lkdkd Lkqkq

%{
... sistema de 6x6
i=[id;iq;i0;ifd;ikd;ikq]  
L=[Ld 0 0 Lmd Lmd 0;...
    0 Lq 0 0 0 Lmq;...
    0 0 Lls 0 0 0;...
    Lmd 0 0 Lff Lmd 0;...
    Lmd 0 0 Lmd Lkdkd 0;...
    0 Lmq 0 0 0 Lkqkq];
%}

... sistema de 5x5
i=[id;iq;ifd;ikd;ikq]  
L=[Ld 0  Lmd Lmd 0;...
    0 Lq 0 0 Lmq;...
    Lmd 0 Lff Lmd 0;...
    Lmd 0 Lmd Lkdkd 0;...
    0 Lmq 0 0 Lkqkq]

flux=L*i

... Eq tension estator
dPsid=d.w_base*(vd+Psiq*wr-d.Ra*id);   
dPsiq=d.w_base*(vq-Psid*wr-d.Ra*iq);   
dPsi0=d.w_base*(v0+d.Ra*i0);
... Eq tension rotor
dPsifd=d.w_base*(vfd-d.Rfd+ifd);    
dPsikd=d.w_base*(vkd-d.Rkd*ikd);
dPsikq=d.w_base*(vkq-d.Rkq*ikq);
Te=(3/2)*p*Psid*iq-Psiq*id;
dwr=(Tm-Te)/(2*d.H);

[]: