Matlab! Alguem percebe?

taberneiro

New member
Estou a fazer um trabalho em matlab... alguem percebe deste programa? desculpem la recorrer aqui ao forum mas é que ando mesmo desesperado [s)] [s)] [s)]
obrigado
 
Tou a fazer um programa em que tenho de utilizar um som como input e depois representar as frequencias tal como se fosse um sonometro. so que consigo obter um grafico mas nao consigo atinar com a escala, pois existem muitos pontos e em vez de fazer um grafico de barras faz uns traços (um pouco complicada esta explicação) [s)] .
Tens alguma solução?
obrigado
 
Hum, provavelmente usaria a função "stem()" em vez de "plot()". Dá uma olhado no help.

tenho de usar a função "bar"... mas precisava de dividir a escala dos eixos do "x" para limitar a função. ou seja: a minha escala é de 0:4000 mas precisava de fazer uma barra com os dados de 0:500 ;500:1000....etc..
e é este o problema...
 
tenho de usar a função "bar"... mas precisava de dividir a escala dos eixos do "x" para limitar a função. ou seja: a minha escala é de 0:4000 mas precisava de fazer uma barra com os dados de 0:500 ;500:1000....etc..
e é este o problema...

Vou supor que tens um vector com 4000 pontos e que queres apenas um vector com 8 pontos para traçares o gráfico. Cada um destes 8 pontos corresponde à média de 500 pontos do vector original.

Eu faria um ciclo for para isso



Código:
vector_destino = zeros(8,1);
 
for cont=0:7
   vector_destino(cont+1) = mean( vector_origem(cont*500+1:(cont+1)*500) );
end;
 
No meu caso é uma função input de um som. essa função tem uma frequencia "x" de 0:4000

mas neste intervalo (0:4000) a função faz uma barra a cada 0.2. logo fico com os pontos "todos uns em cima dos outros". assim o que eu preciso é de fazer intervalos dentro desta função ou seja: ex: entre 0:500 fazer uma media destes valores para apenas 1 barra. e assim sucessivamente até aos 4000..
 
No meu caso é uma função input de um som. essa função tem uma frequencia "x" de 0:4000

mas neste intervalo (0:4000) a função faz uma barra a cada 0.2. logo fico com os pontos "todos uns em cima dos outros". assim o que eu preciso é de fazer intervalos dentro desta função ou seja: ex: entre 0:500 fazer uma media destes valores para apenas 1 barra. e assim sucessivamente até aos 4000..

Foi o que eu te fiz acima, sem tirar nem pôr!
Admitindo que tens as amostras de som carregadas em "vector_origem" (ou que tenhas calculado uma fft sobre as ditas amostras, sei lá) aquelas 4 linhas de código colocam-te em "vector_destino" as médias de grupos de 500 valores de "vector_origem".
 
Só para encalhar um pouco o tópico.... [:p]


Vai aqui uma conversa interessante, espero pelo próximo episodio [:p]

Não faço ideia do que falam [:D] :sh)
 
Código:
vector_destino = zeros(8,1);
 
for cont=0:7
   vector_destino(cont+1) = mean( vector_origem(cont*500+1:(cont+1)*500) );
end;
[/quote]

explica me só uma coisa se faz favor: o que significa vector origem, vector destino e "cont"??
 
Código:
vector_destino = zeros(8,1);
 
for cont=0:7
   vector_destino(cont+1) = mean( vector_origem(cont*500+1:(cont+1)*500) );
end;

explica me só uma coisa se faz favor: o que significa vector origem, vector destino e "cont"??[/quote]

"vector_origem" é um vector que eu admiti estarem colocados os dados a agrupar;

"vector_destino" é um vestor que eu criei para guardar as médias dos dados agrupados;

"cont" é uma variável que eu usei como ontador do ciclo "for" e para calcular os índices dos vectores.

A avaliar pela tua pergunta, sou-te muito sincero: vai estudar o documento cujo link te coloquei mais acima...
 
explica me só uma coisa se faz favor: o que significa vector origem, vector destino e "cont"??

"vector_origem" é um vector que eu admiti estarem colocados os dados a agrupar;

"vector_destino" é um vestor que eu criei para guardar as médias dos dados agrupados;

"cont" é uma variável que eu usei como ontador do ciclo "for" e para calcular os índices dos vectores.

A avaliar pela tua pergunta, sou-te muito sincero: vai estudar o documento cujo link te coloquei mais acima...[/quote]

:( Ja me deste uma grande ajuda! vou ver entao o documento com atenção e vou ver o que consigo fazer!
obrigado
 
De nada, estamos aqui para ajudar.

E não leves a mal o conselho que te dei, porque não quero desmoralizar ninguém. Mas dá para ver que estás pouco à-vontade com essencial do Matlab.
Boa sorte!
 
De nada, estamos aqui para ajudar.

E não leves a mal o conselho que te dei, porque não quero desmoralizar ninguém. Mas dá para ver que estás pouco à-vontade com essencial do Matlab.
Boa sorte!

è me um pouco complicado o matlab ainda. peguei nele quase sem saber nada.. agora aprender isto tudo á pressao nao é facil! [kiss]

obrigado novamente!
até a proxima [:cool:]
 
MatLab? Txiii... Tenho a exame a programação sobre essa coisa na próxima sexta-feira... Só espero que entretanto saiba mais do que o que sei agora, senão o caso fica mal parado... lol
 
que bela hora para encontrar este tópico, estou também a usar o matlab para um trabalho de introdução à programação, a experiência nestas coisas de programar ainda é verde.

já agora, sem querer roubar o tópico e aproveitando a boa vontade, a minha duvida é a seguinte. tenho um programa e quero que a ultima pergunta seja do género, "pretende efectuar uma nova experiência?" caso seja sim o programa volta ao inicio, se for não, o programa acabaria. a parte do sim, esta a funcionar, a parte do não, é que não consigo, ele assume como se fosse um sim na mesma..e não acaba.
existe algum comando especifico ou alguma coisa que se possa fazer?
 
Deves estar a usar algum tipo de ciclo "while" ou semelhante, só que n estás a alterar convenientemente a variável de controlo...
 
Voltar
Superior