MATLAB - несколько возвращаемых значений из функции? - PullRequest
49 голосов
/ 15 ноября 2010

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

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

Ответы [ 4 ]

83 голосов
/ 15 ноября 2010

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

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

[array, listp, freep] = initialize(size)
0 голосов
/ 23 мая 2017

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

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

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

     [aa bb cc] = yourfunction(optional);

Переменные aa, bb и cc теперь содержат возвращаемые переменные.

0 голосов
/ 06 ноября 2016

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

0 голосов
/ 26 октября 2016

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

И Octave печатает его как "ans".

Others, 'listp',' freep 'не были напечатаны.

Поскольку это обнаружилось в функции.

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

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

И' array ',' listp',' freep 'будет печататься как A, B и C.

...