2010-11-15 3 views
46

Я пишу 2 функции в matlab, функцию инициализации и функцию для вставки элементов в массив, рассматривающий его как двусвязный список. Однако моя функция инициализации возвращает только «ans =» и инициализированный массив. Как я могу установить значение других переменных? Вот мой код:MATLAB - несколько возвращаемых значений из функции?

function [ array, listp, freep ] = initialize(size) 
    array = zeros(size, 3); 
    listp = 0; 
    freep = 1; 
end 
+1

У Python это тоже. Кроме того, у него есть numpy, SciPy и многое другое;) –

+4

@ Ник, пожалуйста, отметьте правильный ответ как правильный ..... было 2 года, парень заслуживает ответа, чтобы его принимали –

ответ

76

Matlab позволяет вам возвращать сразу несколько значений, а также принимать их inline.

Когда вы называете его, получить индивидуальный переменный инлайн:

[array, listp, freep] = initialize(size) 
+1

Хмм, я думал, что попробовал, и это не так, т, но, я думаю, я забыл скобки. Благодаря! – Nick

+29

Кроме того, если у вас есть переменная вывода функции, которая вам не нужна, но более поздние, что вы делаете, символ ~ не будет тратить память на мусорную переменную. Например, '[array, ~, freep] = initialize (size)' (Только в R2009b и более поздних версиях). – Doresoom

+2

@ Ник, вы можете захотеть принять ответ. 5 лет - это долгое время, но я бы сказал, что лучше поздно, чем никогда;). – patrik

0

Я думаю, что Октав возвращает только одно значение, которое является первым возвращаемым значением, в вашем случае, «массив».

И Octave напечатайте его как «ans».

Другие, 'listp', 'freep' не были напечатаны.

Потому что он появился внутри функции.

Попробуйте это:

[ A, B, C] = initialize(4) 

и «массив», «listp», «freep» будет печатать как А, В и С.

-1

Измените функцию, что вы получите один единственный результат = [массив, listp, freep]. Таким образом, отображается только один результат.

-1

В функции, которую вы вызываете, используйте следующую функцию, и она будет работать нормально.

 [a b c] = yourfunction(optional) 
    %your code 
    a = 5; 
    b = 7; 
    c = 10; 
    return 
    end 

Это способ вызова функции как из другой функции и из командной терминала

 [aa bb cc] = yourfunction(optional); 

Переменные аа, бб и куб.см теперь держат возвращаемые переменные.

+0

Это ничего не добавляет. – gnovice

Смежные вопросы