View Full Version : Ajuda em MATLAB


soulraver
18-05-2008, 02:02
Boas.

Tenho uma simulação para fazer em MATLAB e no final apresentar um gráfico. Esta parte do gráfico é que me está a fazer confusão.

Eu estou a calcular valores do eixo do yy e do eixo do xx dentro de um ciclo. A primeira dúvida é, vou construindo o gráfico à medida que calculo os valores, ou vou guardando os valores e construo o gráfico no final?

Qualquer que seja a solução não estou a ver como se implementa! Enfim, se for calculando e construindo logo o gráfico será algo do género:


while(...)
xx = calc_xx(..);
yy = calc_yy(...);
plot(xx,yy)
axis equal
xlabel('Velocidade');
ylabel('Altura');
title('Variacao da Velocidade');

Se for guardando os valores (não sei bem em que estrutura - ?), como e que faço a leitura do que guardei e construo o gráfico? Qual é mais ou menos a estrutura do código/sintaxe?

Estou um bocado às aranhas, agradeço umas luzes.

Tks

FASC
18-05-2008, 03:06
Se fizeres "hold on" antes do ciclo, cada vez que fizeres plot ele adiciona os novos pontos ao gráfico.

Conselho:

figure(1);
hold on;

while(...)
xx = calc_xx(..);
yy = calc_yy(...);
plot(xx,yy);
end;

axis equal
xlabel('Velocidade');
ylabel('Altura');
title('Variacao da Velocidade');

hold off;
Isto é uma das formas mais rápidas de adaptar ao teu problema. De outra forma terias de construir os teus vectores de xx e yy sabendo à partida qual o tamanho máximo que irias necessitar, depois carregavas os valores para dentro dos vectores e só depois farias o gráfico.

exemplo:

xx(1:1:601)=0;
yy(1:1:601)=0;

for I = 1:601
xx(I) = calc_xx(..);
yy(I) = calc_yy(...);
end;

figure(1);
plot(xx,yy);
axis equal;
xlabel('Velocidade');
ylabel('Altura');
title('Variacao da Velocidade');

soulraver
18-05-2008, 04:09
Antes de mais obrigado pelo resposta.

Essa solução do hold on à partida parece-me bem. O objectivo mesmo é resolver da maneira mais simples, porque o que vai ser avaliado é o resultado no gráfico, não é a parte da programação (que até poderia ser numa linguagem convencional).

Amanha vou testar.

Diz-me só o que significa o figure(1) sff.

Tks again!

FASC
18-05-2008, 10:32
Na consola do Matlab: "help figure"

Figure(X) serve para abrires uma figura em específico e trabalhares nela. Normalmente é boa programação (e dá jeito :P) abrir a figura na qual queres trabalhar para teres a certeza que todos os plots estão a ser mostrados e não há coisas sobrepostas (principalmente com o uso do hold on).