Я пишу 2 функции в matlab, функцию инициализации и функцию для вставки элементов в массив, рассматривающий его как двусвязный список. Однако моя функция инициализации возвращает только "ans =" и инициализированный массив. Как я могу установить значение других переменных? Здесь мой код:
function [ array, listp, freep ] = initialize( size )
array = zeros(size, 3);
listp = 0;
freep = 1;
end
Matlab позволяет вам возвращать несколько значений, а также получать их в строке.
Когда вы вызываете его, получайте отдельные переменные inline:
[array, listp, freep] = initialize(size)
[array,~,freep]=initialize(size)
(только в R2009b и более поздних версиях.)
Я думаю, что Octave возвращает только одно значение, которое является первым возвращаемым значением, в вашем случае "array".
И Octave напечатайте его как "ans".
Другие, 'listp', 'freep' не были напечатаны.
Потому что он появился внутри функции.
Попробуйте следующее:
[ A, B, C] = initialize( 4 )
И "массив", "listp", "freep" будут печататься как A, B и C.
Используйте в функции, которую вы вызовете, и она будет работать нормально.
[a b c] = yourfunction(optional)
%your code
a = 5;
b = 7;
c = 10;
return
end
Это способ вызова функции как из другой функции, так и из командной строки
[aa bb cc] = yourfunction(optional);
Переменные aa, bb и cc теперь содержат возвращаемые переменные.
Измените функцию, в которой вы получите один результат: результат = [массив, listp, freep]. Таким образом, отображается только один результат.