Сначала вам нужно создать матрицу M
, где каждый столбец представляет собой пару параметров, которые вы хотите отправить в функцию.
e.g.:
>> x1 = 1:10
>> x2 = 1:10
x1 =
1 2 3 4 5 6 7 8 9 10
x2 =
1 2 3 4 5 6 7 8 9 10
>> M =[x1;x2]
M =
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
Затем мы создаем массив ячеек, содержащий пары параметров (столбцы M
):
>> M2 = num2cell(M, 1)
M2 =
[2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double] [2x1 double]
Что дает нам такой массив ячеек:
>> M2{1}
ans =
1
1
>> M2{3}
ans =
3
3
Теперь вы хотите вызвать cellfun
с массивом ячеек и требуемой функцией. .
например с функцией sum
по умолчанию:
>> cellfun(@sum, M2)
ans =
2 4 6 8 10 12 14 16 18 20
Или со своим func
:
>> cellfun(@func, M2)
ans =
2 8 18 32 50 72 98 128 162 200
Кстати, ваша функция func
— это просто l2 norm
в квадрате, который уже существует в матлабе:
>> cellfun(@norm, M2) .^ 2
ans =
2.0000 8.0000 18.0000 32.0000 50.0000 72.0000 98.0000 128.0000 162.0000 200.0000
13.11.2016