Matlab

ee09115

Membro
Boas,

costumo utilizar o Matlab e até agora não tenho tido problemas. Hoje não consigo fazer um simples diagrama de bode ou de nyquist ou até o lugar geométrico das raízes, dá sempre o mesmo erro e eu não sei porque..

>> bode (tf([1],[1 1]))
??? Error using ==> lti.bode at 95
Undefined function or method 'resppack.bodeplot' for input arguments of type 'cell'.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

>> nyquist (tf([1],[1 1]))
??? Error using ==> lti.nyquist at 85
Undefined function or method 'resppack.nyquistplot' for input arguments of type 'cell'.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>> rlocus (tf([1],[1 1]))
??? Error using ==> lti.rlocus at 78
Undefined function or method 'resppack.rlplot' for input arguments of type 'double'.




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Se alguém me puder ajudar, desde já obrigado.
 
faz uma função de tranferencia.
eu tenho o mesmo matlab instalado num outro pc e funciona corretamente. E neste pc também funcionava!! mas, de um momento para o outro deixou de funcionar!!

Cumps
 
Vou usar um tópico à sorte sobre Matlab:

Tenho um ficheiro .txt com 3 colunas: data, psi-20, sp500.
O psi-20 e o sp500 contém valores "normais" dos índices bolsistas em questão ao longo do tempo.

Quero calcular a correlação entre as séries temporais: uso o "corr(psi20,sp500)" ou o "crosscorr(psi20,sp500)"?
Depois quero desenhar o gráfico com a correlação entre os retornos logarítmicos dos dois índices. Esse retorno log está definido como logpsi20 e logsp500. Faço A=crosscorr(logpsi20,logsp500) e depois plot(A)?

Já agora, quando faço este gráfico, como altero o eixo dos xx para aparecer as datas que estão em "data"?

Muito obrigado.
 
para invocares as colunas fazes carregas o ficheiro - load file.txt, sendo que cria uma variável à qual terás acesso, por exemplo com data=file(:,1), psi20=file(:,2) e sp500=file(:,3).
já usei correlações mas não me lembro como eram feitas as contas, e que resultados esperar, mas apartir daqui podes enviar os índices como parâmetros. *edit: fui rever e usei a corrcoef()*

se as datas forem sequenciais, podes usar a função timestamp.

ex:

x = [2 5 8 2 11 3 6];
ts1 = timeseries(x,1:7); %aqui o x será o resultado da correlação
ts1.Name = 'Daily Count';
ts1.TimeInfo.Units = 'days';
ts1.TimeInfo.StartDate='01-Jan-2011' % Set start date.
ts1.TimeInfo.Format = 'mmm dd, yy' % Set format for display on x-axis.
ts1.Time=ts1.Time-ts1.Time(1); % Express time relative to the start date.
plot(ts1)
 
Última edição:
Estou mesmo a começar nisto e fiquei um pouco confuso com a tua resposta. O ficheiro já está separado em 3 colunas, foi importado via (import) e dei os nomes (por alguma razão que desconheço via dlmread sai um único ficheiro).

Da forma como tenho os dados, calculo a correlação como?
 
experimenta fazer o load do ficheiro.txt e depois corr(ficheiro(:,2),ficheiro(:,3)).
fiz o crosscorr e abre logo um gráfico, não deve ser o que procuras. o corrcoef já não me lembro como é usado.
 
experimenta fazer o load do ficheiro.txt e depois corr(ficheiro(:,2),ficheiro(:,3)).
fiz o crosscorr e abre logo um gráfico, não deve ser o que procuras. o corrcoef já não me lembro como é usado.

O problema, pelo menos daquilo que me está a dar, é que o corr(....) dá um valor, por exemplo 0,8. Ora, depois para fazer um gráfico com isto não dá, não há sequência temporal.

(obrigado pela paciência)
 
Provavelmente estás a fazer a correlação entre todos os valores e não entre pares de valores.

Para o plot tens que fazer plot(data,A)

Lê a ajuda das funções que usas. Normalmente é tudo o que precisas para aprender a utilizar o Matlab.
 
Back
Topo