AlexandreIS Posted April 16, 2012 at 11:26 PM Report #449492 Posted April 16, 2012 at 11:26 PM Boas tardes pessoal, eu sou novo aqui no site. Eu estou com um problema em MATLAB onde tenho que dividir 1 sinal em segmentos de 100, e depois fazer a média de cada segmento. Só que eu não sei como fazer a média depois de dividir o segmento. "Divida o sinal em segmentos de 100 pontos" o sinal tem 100000 pontos mas tenho que fazer a média de 100 em 100 pontos, como poderei fazer ? Já tentei um ciclo for, mas a questão é mesmo como fazer a média de cada ponto depois.
pedrosorio Posted April 17, 2012 at 12:15 AM Report #449494 Posted April 17, 2012 at 12:15 AM Dado um array, o MATLAB tem uma função que calcula a média (mean), esta função também permite calcular a média de cada uma das colunas de uma matriz. Com um ciclo for é relativamente simples fazer isso, mas também é possível fazê-lo sem ciclos (e bastante mais eficiente em MATLAB). Se sabes que o sinal completo tem sempre 100000 pontos, vais ficar com 1000 segmentos. Uma forma de resolver o problema (sem usar ciclos) seria esta(supondo que o sinal inicialmente está na variável sinal): //dividir o sinal em 1000 segmentos de 100 pontos cada (i.e uma matriz 100x1000 em que cada coluna é um segmento) segmentos = reshape(sinal,100,1000); //calcular a média de cada uma das colunas(i.e. cada segmento de 100 pontos) usando a função mean medias = mean(segmentos); Não respondo a dúvidas por mensagem.
AlexandreIS Posted April 17, 2012 at 12:56 PM Author Report #449517 Posted April 17, 2012 at 12:56 PM Muito obrigado, o método "reshape" é que eu não conhecia, com isso já consegui por o código a funcionar, obrigado.
AlexandreIS Posted April 19, 2012 at 03:23 PM Author Report #449999 Posted April 19, 2012 at 03:23 PM Boa tarde, Eu tenho uma questão em MATLAB, tenho um sinal (Biossinal) com 1*100000, eu precisava de dividir o sinal por Ensemble Averaging em segmentos de 100 pontos e fazer a média de cada 1 dos segmentos. Como é que a utilizar um ciclo for posso dividir o sinal de 100000 pontos em segmentos de 100 e fazer a média deles, para depois guardar e amostrar em plot todos os pontos da média, ou seja, de 1-100 (Média 1), de 101-200(Média 2), etc... até 100000 e depois no plot demonstrar num sinal todos os pontos. eu tentei fazer por reshape: segmentos = reshape(biossinal,100,1000); m= (segmentos); M=mean(m); mas isto não faz o que eu preciso, será que alguem me pode dizer como fazer isto por ciclo for? , pois é desta maneira que o meu enunciado exige.
Rui Carlos Posted April 19, 2012 at 03:38 PM Report #450001 Posted April 19, 2012 at 03:38 PM Podes criar uma matrix 100x1000, e depois atribuis a cada linha k os valores de biossinal((k-1)*100+1:(k-1)*100+100). Rui Carlos Gonçalves
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now