2012-01-05 17 views
6

Vorrei sapere se è possibile utilizzare un valore ":" come argomento di una funzione.passaggio di due punti come argomento di una funzione in matlab

Qualcosa di simile:

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

è anche possibile passare l'opera chiave fine come argomento di una funzione, e anche 1: fine, 3: end-5, ecc ... Dubito che sia possibile, ma mi piacerebbe esserne sicuro.

Inoltre, viene visualizzato un errore strano quando passo "1: fine" come argomento di una funzione, non produce errori, ma all'interno della funzione non viene assegnato alcun argomento (nemmeno gli altri argomenti). Qualcuno sa cosa succede?

+1

Non sono sicuro che sia effettivamente necessario farlo. Racconta un po 'di più cosa stai cercando di ottenere. Puoi certamente passare i due punti come una stringa 'if x ==": "...', ** fine ** può essere trovata usando [size] (http://www.mathworks.co.uk/help/techdoc /ref/size.html) e passati come numero. – oleksii

+0

Sì, passarlo come una stringa sarebbe una buona soluzione ... Buona idea. – Oli

+3

Questo è ciò che accade all'interno delle chiamate all'operatore sovraccarico '()': se chiamate 'x (:)', ':' arriva a subsref o subsasgn come stringa '':''. Quindi sembra ragionevole. Usa 'ischar (x) && isequal (x, ':')' invece di '==' però. Il '==' genererà errori sulle differenze di dimensioni e produrrà falsi positivi: '==' esegue la conversione del tipo implicito, quindi '58 == ':'' è vero. –

risposta

6

È possibile ignorare sia per le proprie classi:

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 

Per quanto riguarda le funzioni, non ho mai sentito parlare di un tale funzionalità.

0

No, non è possibile passare i due punti come argomento (non ha alcun senso).

+1

Potrei dargli la sensazione che voglio, se fosse possibile. Sarebbe una sorta di sovraccarico di "operatore argomento". – Oli

Problemi correlati