Jump to content
Karolas

[Dúvida] Trabalho em Matlab/Octave

Recommended Posts

Karolas

Boas,

Estou a fazer um trabalho, para uma cadeira de programação e estou a ter algumas dúvidas.

Está aqui o enunciado:

http://pdfcast.org/pdf/trabalho-matlab-octave

Já fiz duas funções: uma para ler o url e outra para juntar todas as 36 amostras numa tabela.

Agora não consigo fazer uma função para separar os cancerosos(os que acabam em em 1) e os não cancerosos(acabem em 2)

estão aqui as duas funções criadas:

function dados=ledados(url)
%dados=ledados(url)
%recebe o url das amostras
%devolve a matriz numérica da amostra com os dados dos 400 genes
%e o ultimo valor indica se é ou não um tecido canceroso
 [dadosStr,sucesso]=urlread(url);
 if sucesso
   dados=str2num(dadosStr);
 else
   dados=[];
   disp('whop whop');
 end
end

function dado=tabela(vector)
%dado=tabela(vector)
%recebe os vectores contidos num determinado url
%devolve as matrizes numéricas contidos no url e coloca-os
%a todos em colunas seguidas
 for k=1:length(vector);
   b=num2str(k);
   a=strcat(vector, 'amostra',b);
   u=ledados(a);
   for j=1:length(u);
     v(j,k)=u(j);
   end
 end
 dado=v
end

Edited by Rui Carlos
Tag da linguagem no código.

Share this post


Link to post
Share on other sites
Karolas

Resumidamente o trabalho é o seguinte:

Temos o seguinte url http://ssdi.di.fct.unl.pt/ice/b/tp1/ , que tem 36 amostras.

http://ssdi.di.fct.unl.pt/ice/b/tp1/amostra1, http://ssdi.di.fct.unl.pt/ice/b/tp1/amostra2 até http://ssdi.di.fct.unl.pt/ice/b/tp1/amostra36, têm cada uma 401 linhas. Da linha 1 até à linha 400, representam 400 genes. A linha 401 apenas indica se o tecido é canceroso (aparece 1) ou não aparece (2).

O primeiro passo é colocar todas as amostras em colunas como mostra o seguinte exemplo:

image.jpg

Ou seja fica com uma matriz 401x36.

Esta já esta feita é a tabela(url) acima postada.

O segundo passo é fazer uma função que separe os tecidos cancerosos dos não cancerosos, ou seja, duas matrizes uma com os 1 no final e outra com os 2 no final.

O terceiro e quarto passos, são criar uma função para a média e outra para o desvio padrão de cada gene (linha) e juntá-las às duas matrizes anteriormente separadas aqui vai um exemplo de como deverá ser o resultado final:

Cancerosos

image.jpg

Não canceroso

image.jpg

Depois disto é criar uma função para a calcular a discrepância, a discrepância é calculada de seguinte forma:

image.jpg

Depois aparece algo assim:

image.jpg

Share this post


Link to post
Share on other sites
Rui Carlos

Para o primeiro caso, precisas de criar duas matrizes (m1 e m2).

Depois percorres as colunas da matriz com as amostras, e dependendo do valor da última linha, escolhes a matrix a adicionar.

Tens ainda que remover a última linha, que deve ser algo do género m11 = m1(1:400, :) .

Podes também ver esta discussão, pois o Matlab até deve permitir fazer a separação sem ciclos e condicionais, mas não tenho o Matlab instalado para testar. Qualquer coisa como m1 = m(:,m(401, :) == 1).

Para média e afins, o Matlab tem uma função que faz exactamente o que precisas: mean. (Repara que essa função já lida com matrizes. Vê o segundo exemplo para o teu caso.)

Para o desvio padrão, penso que tens que usar a função std.

Depois é só adicionares as colunas às matrixes ([m1 vector_com_avg vector_com_std]).

Neste ponto, convém que já saibas resolver o resto sozinho.

Share this post


Link to post
Share on other sites
FCT_Tf

Karolas, tudo bem?

Por acaso também estou a fazer o mesmo genero de trabalho, só que o enunciado é diferente e tenho 36 amostras e 400 dados.

Só que não estou nem estou a conseguir criar o segundo programa que lê as amostras do link, so consegui fazer o primeiro ficheiro que lê o ficheiro total, não me podes dar uma ajuda sff? Não consiguo fazer o inicio quanto mais chegar a imagem no final do trabalho...

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.   Restore formatting

  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.


×
×
  • Create New...

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.