Programar em MATLAB

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Programar em MATLAB

Mensagempor jimmy » Sexta Dez 11, 2009 18:15

Olá a todos.

Estou a fazer a minha tese de mestrado e existem algumas fases em que tenho de programar(programação básica). Estou a utilizar o MATLAB(basicamente SIMULINK com um pouco de programação em C).

Duvida: existe uma variável(clk) que oscila entre 0 e 1 com um determinado periodo(onda quadrada), ou seja, de 0 passa para 1 depois passa para 0 e assim sucessivamente num determinado intervalo de tempo.
Eu queria que o algoritmo corresse apenas uma vez quando passa-se de 0->1 , em vez de estar sempre a correr..

O programa abaixo esta errado, ou seja, o algoritmo corre varias vezes quando o clk=0 e continua a corre varias vezes quando clk=1.

if clk==0;

%Inicio do P&O Algorithm

if deltaPa > 0
if Va_new > Va
Vref_new = Va_new + deltaV; % Aumenta Vref
else
Vref_new = Va_new - deltaV; % Diminui Vref
end
elseif deltaPa < 0
if Va_new > Va
Vref_new = Va_new - deltaV; % Diminui Vref
else
Vref_new = Va_new + deltaV; % Aumenta Vref
end
else
Vref_new = Va_new; % Não há alteração

end

end

if clk==1;

%Inicio do P&O Algorithm

if deltaPa > 0
if Va_new > Va
Vref_new = Va_new + deltaV; % Aumenta Vref
else
Vref_new = Va_new - deltaV; % Diminui Vref
end
elseif deltaPa < 0
if Va_new > Va
Vref_new = Va_new - deltaV; % Diminui Vref
else
Vref_new = Va_new + deltaV; % Aumenta Vref
end
else
Vref_new = Va_new; % Não há alteração

end

Gostaria muito,se possíve,l que me dessem alguns palpites ou alterem o código se possível.

Agradecia muita a vossa ajuda. Obrigado
I' Good
jimmy
Aprendiz
Aprendiz
 
Mensagens: 43
Registado: Segunda Ago 02, 2004 15:37
Localização: lisboa

Re: Programar em MATLAB

Mensagempor LuisFilipe » Sábado Dez 12, 2009 0:00

Julgo que tens que detectar a mudança da variável e só aí executar o que queres

O que apresentas é um erro crasso visto que os dois algoritmos são iguais e isso em programação só se usa em casos extremos.

Ora como não precebo nada de matlab não sei como podes usar uma variável global mas seria assim


Código: Seleccionar todos
% Inicializar
  clk0 = 0
  clk1 = 0

[color=red]if clk==0;[/color]
    if clk0 == 0
        clk0 = 1
    end
end

[color=red]if clk==1[/color];
    if clk0 == 1
        if clk1 == 0
           
            %Inicio do P&O Algorithm
           
            if deltaPa > 0
                if Va_new > Va
                    Vref_new = Va_new + deltaV; % Aumenta Vref
                else
                    Vref_new = Va_new - deltaV; % Diminui Vref
                end
            elseif deltaPa < 0
                if Va_new > Va
                    Vref_new = Va_new - deltaV; % Diminui Vref
                else
                    Vref_new = Va_new + deltaV; % Aumenta Vref
                end
            else
                Vref_new = Va_new; % Não há alteração
            end
           
            clk1 = 1
        end
    end
end


Assim o algoritmo será executado 1 vez só, quando clk for 1 depois de ter sido 0.

espero ter ajudado...
LuisFilipe
Membro Diamante
Membro Diamante
 
Mensagens: 1270
Registado: Domingo Set 04, 2005 22:12

Mensagempor jimmy » Sábado Dez 12, 2009 13:04

Obrigado. Eu vou correr o programa e depois digo qualquer coisa.
I' Good
jimmy
Aprendiz
Aprendiz
 
Mensagens: 43
Registado: Segunda Ago 02, 2004 15:37
Localização: lisboa


Voltar para Programação

Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante

cron