Mostrando postagens com marcador matlab. Mostrar todas as postagens
Mostrando postagens com marcador matlab. Mostrar todas as postagens

13 de set. de 2014

Relé e gráficos sobrepostos no Simulink

Para obter dois gráficos numa mesma janela usando o Scope do Simulink, use um Mux, como na figura abaixo.


O funcionamento do relé é o seguinte. Quando a tensão de entrada for maior que o Von, a saída é V1; quando for menor, V2. Usando o Simulink, os parâmetros são:


Dica do mux: Fórum da Mathworks
Relés para ajuste PID: Projeto Final

28 de mai. de 2013

Scroll não funciona no Matlab com mouse wireless [resolvido]

A rodinha do meu mouse wireless da Microsoft funciona perfeitamente em todas as aplicações, menos no Matlab, no Windows 7. A solução é a seguinte:

- Baixe o arquivo IPx64_1042_7.10.344.0.exe e instale
- Selecione o modelo IntelliMouse Explorer 4.0

Fonte de consulta: http://www.mathworks.com/matlabcentral/newsreader/view_thread/253899

PS: a mudança fez com que o modo de fechar aba com o botão do meio do mouse fosse substituído por chamar a alternância de janelas (como faz o alt+tab).



Como estou acostumado a fechar coisas com o botão do meio, fui no programa Microsoft Mouse e mudei a opção de Wheel Button de Flip para Middle-click (primeira opção)




7 de dez. de 2012

Multiplicação de polinômios no Matlab sem o conv

Implementando, com auxílio dos conhecimentos do post anterior, a multiplicação de dois polinômios (que, normalmente, é feita pela função conv):


  1. function D=multiplicarPolinomios(A,C)
  2. % Entre com A e C na forma de vetor coluna e obtenha D, onde:
  3. % A representa a0^N+...+aN
  4. % B representa b0^M+...+bM
  5. %e a saida eh a0*b0^(M+N)+...+aNbM
  6.  
  7. N=length(C);
  8. B=zeros(0);
  9. for i=1:N,
  10.     Aux=[zeros(i-1,1);A;zeros(N-i,1)];
  11.     B=[B,Aux];
  12.     i=i+1;
  13. end
  14. D=B*C;


Precisei implementar essa função por extenso para calcular um sistema de equações, que não estava na forma explícita.

Juntar (append) matriz de zeros a uma matriz no Matlab

Para adicionar zeros a uma matriz, podemos usar a função zeros do Matlab. E, através da estrutura [A,B] ou [A;B], podemos juntar matrizes lateralmente ou verticalmente, respectivamente.

Seja A=[3;2], para fazer A2 com 3 zeros adicionados ao final:
A2=[A;zeros(3,1)]

A3 com 2 zeros ao lado:
A2=[A;zeros(3,1)]



    A3 com 2 zeros ao lado:
    A3=[A,zeros(3,2)]




    10 de nov. de 2012

    Passar função de transferência para forma Paralela

    Eis aqui um script de matlab para passar uma função de transferência H(z) = b(z)/a(z) para a forma paralela, utilizando blocos de segunda ordem . A função residue retorna simplesmente valores de primeira ordem, com coeficientes complexos. Utilizando esta função, o valor retornado já é da forma (bk1z+bk2)/(z^2+ak1z+ak2).


    1. function [num_paralelo,den_paralelo]=formaParalela(b,a)
    2. % forma paralela dado um polinomio H=b/a
    3. % input: formaParalela(b,a)
    4. % resposta do tipo
    5. %
    6. % [0 bk1 bk2 1 ak1 ak2]
    7. %
    8. % onde a funcao correspondente e':
    9. %
    10. % bk1z+bk2
    11. %-----------
    12. %z^2+ak1z+ak2
    13. %
    14. % fonte: Diniz, Digital Signal Processing 2nd Ed (p. 265)
    15. [Residuos,Polos,Constante]=residue(b,a);
    16. Nparalelo=length(Polos);
    17. polos_reais=cplxpair(Polos);
    18. residuos_reais=zeros(Nparalelo,1);
    19. for i=1:Nparalelo,
    20.    residuos_reais(find(polos_reais==Polos(i)),1)=Residuos(i);
    21. end;
    22. num_blocks=ceil(Nparalelo/2);
    23. Hparalelo=zeros(num_blocks,6);
    24. for count_p =1:num_blocks,
    25.   if length(polos_reais)~=1,
    26.     Hparalelo(count_p,2)=residuos_reais(1)+residuos_reais(2);
    27.     Hparalelo(count_p,3)=-residuos_reais(1)*polos_reais(2)-polos_reais(1)*residuos_reais(2);
    28.     Hparalelo(count_p,5)=-polos_reais(1)-polos_reais(2);
    29.     Hparalelo(count_p,6)=polos_reais(1)*polos_reais(2);
    30.     residuos_reais(1:2) = []; polos_reais(1:2) = [];
    31.   else,
    32.     Hparalelo(count_p,2) = residuos_reais(1);
    33.     Hparalelo(count_p,5) = -polos_reais(1);
    34.   end;
    35. Hparalelo(count_p,4) = 1;
    36. end;
    37. Hparalelo= real(Hparalelo)

    O arquivo deve ser salvo com o nome formaParalela.m e, caso precise de ajuda, o cabeçalho comentado é acessado através de help formaParalela. 

    9 de nov. de 2012

    Plotar gráfico com linha cinza no Matlab

    Como a cor cinza não é uma das cores padrão ('-y' = yellow, por exemplo), devemos definir a cor cinza, no começo do código:

    cinza=[0.4,0.4,0.4];

    E, ao usar o comando plot, deve ser usada a opção 'Color',cinza:

    plot(w_grid_p,moduloCascata,'Color',cinza,'LineWidth',1);

    Fonte de consulta: http://www.mathworks.com/matlabcentral/newsreader/view_thread/254249

    Quem sou eu

    Raphael Fernandes
    Carioca, Brasileiro, Estudante de Robótica
    Hiperativo, Imperativo
    Gosto de tecnologia, de transporte, de Rock, de reclamar e de propagandas criativas (e outras coisas que posso ter falado em um post ou não)
    Musicalmente falando, sou assim.

    Related Posts Plugin for WordPress, Blogger...

    Veja também...