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

Recommended Posts

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.

Share this post


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

Share this post


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

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.