Jump to content

Matlab E Probabilidades


xsonofangerx
 Share

Recommended Posts

boas!

é o seguinte, estou a fazer um trabalho final em matlab, e o enunciado é o seguinte:

Especifique a função S = gera(n,a,c,g,t)

que retorna uma sequência aleatória de n caracteres do conjunto {‘A’,‘C’,‘G’,‘T’}, cuja

probabilidade de ocorrência em S é aproximadamente a,c,g e t, respectivamente. Como é óbvio

se a sequência é composta apenas pelas letras ‘A’, ‘C’, ‘G’ e ‘T’ deverá ser a+c+g+t = 1.

(basicamente, gera um vector S com n caracteres do conjunto de letras A, C, G e T, cada uma com probabilidade de "aparecer" num dado elemento do vector de a, c, g e t respectivamente.)

eu já tenho um algoritmo +- definido, estou só com problemas com a operação matemática na coisa. O meu algoritmo é o seguinte ( se estiver errado, também estou aberto a sugestões):

funcion S=gera(n, a, c, g, t)
%(testes e ciclos para proteger o programa de inputs inválidos)

for i=1:n
x=rand() %coloca em x um valor aleatório entre 0 e 1

for i=1:n
if ( ////OPERACAO\\\\ ) % faz uma qualquer operação para determinar qual letra põe
S(i)=A
if ( ////OPERACAO\\\\ )
S(i)=C
if ( ////OPERACAO\\\\ )
S(i)=G
if ( ////OPERACAO\\\\ )
S(i)=T
endif
endfor
endfunction [/codebox]

o problema é que já andei a volta com isto com caneta e papel imenso tempo e nao consigo descortinar que operação (que de certeza que é simples) ponho ali para o ciclo decidir se numa casa i do vector mete A, C, G ou T

alguem com mais jeito que eu para a coisa me dá uma mãozinha?

obrigado e cumprimentos

Link to comment
Share on other sites

Se bem entendi tu queres fazer um rand() e com esse valor fazer correponder a letra.

Agora o que eu não entendo é "e se o rand() der um valor diferente de todos os que lá estão?"

Podes sempre achar um valor à sorte, fazer a diferença entre as probablidades das letras e atribuir a letra da menor diferença...

Mas tb não entendi bem o k keres :S

Link to comment
Share on other sites

Se bem entendi, podias colocar nas condições:

for i=1:n

if ( x < a )

S(i)=A

else if ( x < (a+c))

S(i)=C

else if ( x < (a+c+g) )

S(i)=G

else

S(i)=T

endif

obrigado :clap:

eu ja tinha tentado um algoritmo parecido mas pu-lo de parte porque não me parecia certo, mas afinal parece que dá mesmo. thanks :clap:

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

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.