Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

chromatinpt

MATLAB criar uma matriz com base numa condição

Mensagens Recomendadas

chromatinpt

Olá a todos,

Precisava de umas luzes para pre-processar uma matriz de dados para posteriormente aplicar um modelo matemático.

Imaginem que tenho uma matriz com dados experimentais, onde a primeira linha contem os valores 200, 205, 210,215,... e a primeira coluna os valores 200,202,204,205,206,208,210... a célula (1,1) está empty, ie, portanto estes valores só começam a contar da posição (1,2) e (2,1). O interior desta matriz contém então os dados experimentais.

Vou tentar explicar o que pretendia com um exemplo:

Para o valor referencia 200 (que está na 2a coluna, 1 linha) quero todos os valores experimentais até ao valor referência 205 (que está na 1a coluna). Para o valor referencia 205 (3a coluna, 1 linha) quero todos os valores experimentais até ao valor referencia 210 e assim sucessivamente...

Assim como resultado obteria uma matriz mais ou menos diagonal, em escada crescente.

Já tentei mil e um ciclos for, while e não consigo obter o que pretendo.

Isto é para manipular uma quantidade enorme de dados.

Any ideas?

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
chromatinpt

Boa noite Rui,

Fiz um pequeno exemplo em excel, em cima uma matriz original e em baixo a matriz que pretendia.

matrix.jpg

Os valores experimentais a copiar são apenas aqueles até ao qual o valor do header da coluna + 5 é menor ou igual ao valor da primeira coluna/linha.

Espero que seja perceptível.

Os valores de primeira linha e primeira coluna podem não ter aquele step incremental, mas contudo o raciocinio é sempre igual ao que disse anteriormente de ser sempre menor ou igual ao valor + 5.

Obrigado.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Rui Carlos

O algoritmo deve ser mais ou menos o seguinte:

col = 2

while col<=end

  row = 2

  while matrix(row,1)<=matrix(1,col+1)

    copy(...)

    row=row+1

  col=col+1

Ou seja, para uma determinada coluna, copias os valores para a nova matriz enquanto o valor da coluna 1 dessa linha for menor ou igual ao valor da linha 1 da coluna seguinte. Não sei se percebi bem o problema...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.