Jump to content
  • 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

Recommended Posts

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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.