2010-02-01 27 views
5

Quizás una pregunta muy fácil, pero ya estoy buscando horas en Internet para la respuesta, pero no puedo encontrarla.matriz como salida de una función

He creado la función a continuación. En otro archivo m, quiero usar la matriz 'ubicación_real'. Sin embargo, no es posible usar una celda individual de la matriz (es decir, ubicación_real (3,45) o ubicación_real (1,2)). Cuando trato de usar una celda individual, aparece el siguiente error: ??? Error using ==> Actual_Location Too many input arguments.

¿Alguien puede decirme lo que tengo que cambiar, para poder leer las celdas individuales de la matriz?

function [actual_location] = Actual_Location(~); 
actual_location=zeros(11,161); 
for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
      actual_location(b,t) =1; 
     end  
    end 
    actual_location(1,1) 
end 
+0

¿dónde/cómo estás usando ubicación_real? –

+0

Estoy usando la ubicación_real en otra m-file para algunos cálculos fáciles. (adiciones y suscripciones) Lo abro en la otra carpeta m con el siguiente código: 'Localización_real' – Daan

Respuesta

1

Como lo ha definido, el nombre del archivo-m para la matriz escrito por su Actual_Location función es actual_location. Sin embargo, cuando llame a su función, puede darle a la salida el nombre que desee. Presumo que está llamando como este, recordando que Matlab es un caso poco sensible:

actual_location = Actual_Location(arguments); 

Usted se acaba escribiendo para confundir a ti mismo. Utilice un nombre que no sea actual_location para el argumento ficticio en la definición de la función, y llamar a la función para volver a una variable con un nombre más distinto, algo como esto:

output = Actual_Location(arguments); 

Parece que puede estar esperando actual_location (1,1) para devolver el elemento 1,1 de una matriz, mientras que es, probablemente, una llamada a función con 2 argumentos de entrada.

+0

matlab no distingue entre mayúsculas y minúsculas con respecto a los nombres de las funciones. por lo tanto, si uno tiene una función llamada 'foobar', uno puede llamarla como' fOoBaR' o 'FOObAr', etc. también, una vez que haya llamado a una función, digamos llamada' Actual_Location', el intérprete de matlab interpretará 'real_location (.. .) 'como una llamada a esa función, lo que da como resultado el error nargin. Es una pena que M/W use '()' para indexar la matriz. – shabbychef

+2

Matlab es sensible a mayúsculas y minúsculas. Primero buscará una coincidencia exacta y luego buscará coincidencias inexactas (lanzando una advertencia por el momento, pero un error en una versión futura). Además,() para la indexación matricial es consistente, porque el acceso a una matriz está llamando a una función (subsref, subsasgn) que puede estar sobrecargada. – Jonas

1

Esto parece sugerir que está llamando a la función Actual_Location con muchos argumentos ... Estoy reescribiendo su código con la sangría adecuada.

function [actual_location] = Actual_Location() 
    actual_location=zeros(11,161); 
    for b=1:11 
    for t=1:161 
     actual_location(b,t) = (59/50)*(t-2-(b-1)*12)+1; 
     if actual_location(b,t) < 1 
     actual_location(b,t) = 1; 
     end 
    end 
    actual_location(1,1) 
    end 
Cuestiones relacionadas