Czy jest możliwe uzyskanie "n-tej" wartości zwracanej z funkcji bez konieczności tworzenia fałszywych zmiennych dla wszystkich wartości zwracanych przed wartością n-1
?Jak elegancko zignorować niektóre zwracane wartości funkcji MATLAB?
Powiedzmy, mam następującą funkcję w programie MATLAB:
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
Załóżmy teraz, jestem zainteresowany tylko wartości zwracanej trzeci. Można to osiągnąć poprzez stworzenie jednej zmiennej manekina:
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
Ale myślę, że jest to rodzaj brzydkiego. tam
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
są: Myślę, że może być w stanie coś zrobić jak jeden z następujących rzeczy, ale nie można każdy elegancki sposoby to zrobić, które działają?
Dotychczas najlepszym rozwiązaniem jest po prostu użyć variableThatIWillUse
jako zmienną manekina. To oszczędza mi konieczności stworzenia prawdziwej sztucznej zmiennej, która zanieczyszcza przestrzeń roboczą (lub którą musiałbym usunąć). W skrócie: rozwiązaniem jest użycie wartości variableThatIWillUse
dla każdej wartości zwracanej aż do interesującej. Powrót wartości po prostu może być ignorowane:
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
Nadal uważam, że to jest bardzo brzydki kodu, ale jeśli nie ma lepszego sposobu, to chyba będę akceptować odpowiedź.
Oprócz użycia tablicy komórek, jak opisałem w mojej odpowiedzi, powtarzanie nazwy zmiennej jest prawdopodobnie twoim jedynym rozwiązaniem. Mam nadzieję, że nazwy zmiennych nie są tak długie, jak "variableThatIWillUse". =) – gnovice
W rzeczywistości są. "manekin" był tylko przykładem. Normalnie użyłbym "variableThatIWillNotUse". Inne zmienne mają nazwy "variableThatIMightUse", "variableThatIWillUse2" i "variableThatCanBarelyFitOnA80CharacterLine". Badam korelację między długimi nazwami a ocenami zabójstw. ;) – Jordi
Faktycznie od kiedy funkcja zwracająca ignoruje funkcję R2009b jest rozwiązywana bardziej elegancko za pomocą '~' -Char. np .: [~, b] = sort (rand (10,1)) – ymihere