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

kadster

Matlab - Criar um vector de strings

Mensagens Recomendadas

kadster

Boas.

Um amigo meu aconselhou-me este fórum para esclarecer uma dúvida que provavelmente para vocês é básica sobre matlab.

Basicamente tenho um array (ou pelos menos penso que seja um)

for i=1:number_of_songs;

song(i)=input('Insert song name: ');

Quando faço run aparece na command window Insert song name: |

O que eu queria inserir nessa posição do array era texto, tipo Unforgiven por exemplo, mas o Matlab só me deixa introduzir valores numéricos, tipo 14, 5, etc.

Alguém me podia esclarecer quanto a isto?

Obrigado desde já a todos os que ajudarem.

Partilhar esta mensagem


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

Se leres a documentação da função vais perceber qual é o problema :P

http://www.mathworks.com/access/helpdesk/help/techdoc/ref/input.html

Se fizeres input('Insert song name: ') a função tenta avaliar/executar o input e devolve-te o resultado dessa avaliação/execução (que se for um inteiro é o próprio inteiro). Para devolver a string que introduziste (sem a tentar avaliar/executar) precisas de fazer input('Insert song name: ','s');.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kadster

Muito obrigado pela ajuda.

Tenho aqui um problema com algo idêntico.

Basicamente é um programa em que se inserem 10 localidades e 10 temperaturas e no final ele diz onde foi registada a temperatura mais alta.

Depois de algum tempo no help do matlab adicionei também as chavetas para ser um vector de células, penso eu que não sou experiente nisto.

Mas agora ele está-me a dar um erro na última linha.

??? Error using ==> horzcat

Conversion to cell from char is not possible.

Error in ==> E:\problema_programacao.m

On line 16  ==> disp(['Temperatura mais alta em: ',localidades(i)]);

Pesquisei no help sobre a função horzcat e tem a haver com a concatenação horizontal. No entanto não estou a ver como resolver o problema.

n_localidades=10;
for indice=1:n_localidades;
    localidades{indice}=input('Insira a localidade: ','s');
    temperaturas(indice)=input('Insira a temperatura: ');
end
maximo=temperaturas(1);
for indice=2:n_localidades;
    if temperaturas(indice)>maximo;
        maximo=temperaturas(indice);
    end
end
i=1;
while i<=n_localidades & temperaturas(i)~=maximo;
    i=i+1;
end
disp(['Temperatura mais alta em: ',localidades(i)]);
end

Obrigado a todos os que ajudarem desde já.

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.