erro de codigo em matlab

Alguém me pode dar uma ajuda por favor? Estou a tentar fazer um programa em octave e esta me a dar o seguinte erro:

max recursion depth exceeded
error caled from
size at line 3 column 3
gastos at line 2 column 5

Primeiro implementei uma função gasto para determinar o gasto de uma viatura, com um consumo c (em litros/100km) ao percorrer uma dada distância, dab (dada em km), entre duas cidades com altitudes ha e hb (medidas em metros).

function gc = gasto(ha,hb,dab,c)
if dab == 0
gc = 0;
else
gc = (c/100) * dab * (1+ 100*(hb-ha)/(1000*dab))^2;
end;
end

Depois implementei uma função, gastos, para transformar uma matriz de distâncias, indicada pelo parâmetro Grafo, numa matriz de gastos, C, usando a função gasto, aplicável a distâncias não nulas.

function G = gastos(Grafo,Altitudes,consumo)
n = size(Grafo,1);
G = zeros(n,n);
for i = 1 : n
for j = 1 : n
if Grafo(i,j) == 0;
G(i,j) = Inf;
else
G(i,j) = gasto(Altitudes(i),Altitudes(j),Grafo(i,j),consumo);
end;
end;
end

eu utilizei Grafo = [0,102,89,0,136; 102,0,157,172,39; 89,157,0,58,0; 0,172,58,0,95; 136,39,0,95,0] Altitudes = [100, 160, 85, 90, 130] consumo = 6.5 e ao chamar a funcao gastos(Grafo,Altitudes,consumo) deu-me esse erro , mas nao percebi porque?

alguém consegue dizer-me porque é que está a aparecer este erro? Estou a utlizar o octave
 
Última edição:
Está a faltar um end na função gastos (o que termina a função).

Obrigado mas ja acrescentei isso (e tambem tirei a virgula a seguir de "if Grafo(i,j) == 0") e está-me a dar exatamente o mesmo erro:
max recursion depth exceeded
error caled from
size at line 3 column 3
gastos at line 2 column 5

Alguma ideia para resolver isto?
 
Boas,
Corri o teu código com os teus parâmetros e não tenho nenhum erro.
O resultado que obtive foi:

Código:
octave:7> gastos(Grafo,Altitudes,consumo)
ans =

Inf        7.4329    5.5916           Inf    9.2343
5.8729   Inf         9.2533   10.2885    2.1600
5.9816   11.2033       Inf     3.8353         Inf
Inf        12.1085  3.7053          Inf    6.7059
8.4543   2.9400         Inf     5.6659         Inf
 
Última edição:
Boas,
Corri o teu código com os teus parâmetros e não tenho nenhum erro.
O resultado que obtive foi:

Código:
octave:7> gastos(Grafo,Altitudes,consumo)
ans =

Inf        7.4329    5.5916           Inf    9.2343
5.8729   Inf         9.2533   10.2885    2.1600
5.9816   11.2033       Inf     3.8353         Inf
Inf        12.1085  3.7053          Inf    6.7059
8.4543   2.9400         Inf     5.6659         Inf

Infelizmente a mim só aparece o erro

Quando abro a janela de comandos do octave aparece-me:

Octave was configured for "x86_64-w64-mingw32".
Additional information about Octave is available at https://www.octave.org.
Please contribute if you find this software useful.
For more information, visit https://www.octave.org/get-involved.html
Read https://www.octave.org/bugs.html to learn how to submit bug reports.
For information about changes from previous versions, type 'news'.

warning: function .\area.m shadows a core library function
warning: function .\input.m shadows a built-in function
warning: function .\size.m shadows a built-in function
error: max_recursion_depth exceeded
error: called from
size at line 3 column 3
repmat at line 60 column 7
strjoin at line 71 column 15
fullfile at line 65 column 14
C:\Octave\OCTAVE~1.1\share\octave\site\m\startup/octaverc at line 5 column 1

Uma vez que no erro aparece:
error: max_recursion_depth exceeded
error: called from
size at line 3 column 3
será que isto tem alguma coisa a ver com o erro? É que assim mais vale instalar uma outra versao do octave...
 
O erro não tem nada a ver com o teu programa. Tem a ver com o ficheiro de startup do octave.
Alteraste alguma coisa no ficheiro octaverc ?
Alguma vez conseguiste correr algum programa nessa versão do octave ?

Experimenta correr (não tenho certeza):
Código:
octave -f

ou

Código:
octave --ignore-init-file
 
Última edição:
O erro não tem nada a ver com o teu programa. Tem a ver com o ficheiro de startup do octave.
Alteraste alguma coisa no ficheiro octaverc ?
Alguma vez conseguiste correr algum programa nessa versão do octave ?

Experimenta correr (não tenho certeza):
Código:
octave -f

ou

Código:
octave --ignore-init-file

Obrigado, o erro deve ser por causa disso. Inventei agora mesmo um programa super simples(so com "if") e nem funciona corretamente...
Eu tinha desintalei à uns dias o octave, mas voltei a instalar e desde então é que isso tem acontecido.
Eu corri isso na janela de comandos mas aparece 'octave' undefined near line 1 column 1.
 
Back
Topo