Jump to content
Sign in to follow this  
xsonofangerx

Matlab E Probabilidades

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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • 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.