2015-01-25 5 views
1

Каков наилучший способ передачи нескольких (более 20) переменных разных типов и размеров в функцию?Функция Matlab со многими входами разных типов

Эти переменные являются типами числа, строки, вектора, матрицы и ячейки.

В настоящее время это способ, которым я имею дело с этим:

% BEGIN main m-file 
... 
parameter1= 
parameter2= 
. 
. 
. 
Func1 
% END main m-file 

моя функция:

function Func1 
parameter1=evalin('base','parameter1'); 
parameter2=evalin('base','parameter2'); 
. 
. 
. 

% do something 

end 

мне интересно, если есть лучший подход для этого? Спасибо

+0

Каковы размеры ваших векторов и матриц? – Hoki

+0

Ячейка ячейки, я думаю. Есть много примеров с этим на SO. –

+0

1X2 и 2X3 обычно! – NESHOM

ответ

3

Я предпочитаю использовать structs при передаче большого количества параметров функции. Если у вас есть большое количество постоянных параметров, что может быть лучше использовать вектор или элемент массив, но смешанные параметры structures более удобны, и вы можете дать полевым именам полезных названия:

options.gain = 5.432; 
options.offset = 1.23; 
options.title = 'Just a straight line'; 
options.matrix = [1, 2; 3, 4]; 

И вы бы определили свою функцию следующим образом:

function do_something(options, x) 
y = options.gain * x + options.offset; 
plot(x, y) 
title(options.title) 
+0

безупречный, большое спасибо. – NESHOM

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