2012-01-05 13 views
6

Me gustaría saber si es posible usar un dos puntos ":" como argumento de una función.pasando dos puntos como argumento de una función en matlab

Algo así:

function y=func(x) 
    if x is a colon 
    do this 
    else 
    do that 
    end 

También es posible pasar de la obra clave final como argumento de una función, y también 1: fin, 3: final de 5, etc. ... Dudo que sea posible, pero me gustaría estar seguro.

Además, me sale un error raro cuando paso "1: end" como argumento de una función, no produce ningún error, pero dentro de la función, no se asigna ningún argumento (ni siquiera los otros argumentos). ¿Alguien sabe lo que sucede?

+1

No estoy seguro de que realmente necesite hacer esto. Cuéntanos un poco más de lo que estás tratando de lograr. Ciertamente puede pasar dos puntos como una cadena 'si x ==": "...', ** fin ** se puede encontrar usando [tamaño] (http://www.mathworks.co.uk/help/techdoc /ref/size.html) y pasado como un número. – oleksii

+0

Sí, pasarlo como una cadena sería una buena solución ... Buena idea. – Oli

+3

Eso es lo que sucede dentro de las llamadas al operador sobrecargado '()': si llama a 'x (:)', '' 'entra a subsref o subsasgn como la cadena' ':' '. Entonces parece razonable. Use 'ischar (x) && isequal (x, ':')' en lugar de '==' embargo. El '==' arrojará errores sobre las diferencias de tamaño, y producirá falsos positivos: '==' realiza una conversión de tipo implícita, por lo que '58 == ':'' es verdadero. –

Respuesta

6

Puede anular tanto para sus propias clases:

classdef MyClass 

properties(Access=public) 
    data 
end 

methods 
    function out = end(A,k,n) 
     disp(A); 
     disp(k); 
     disp(n); 
     out = []; 
    end 

    function B = subsref(A,S)    
     disp(S); 
     B = []; 
    end 
end 
end 

En cuanto a las funciones, nunca he oído hablar de un tal funcionalidad.

0

No, no es posible pasar dos puntos como argumento (no tiene sentido).

+1

Podría darle la sensación que quiero, si fuera posible. Sería una especie de sobrecarga del "operador de argumento". – Oli

Cuestiones relacionadas