3

我需要建立一个非线性方程向量fsolve来解决它。但是我应该在每次循环迭代中制作向量的每个元素。我怎样才能组成这样的向量?事实上,我不能使用单元格数组。如何将单元格数组{@(x) x(1)+x(2)^2; @(x) x(1)-2*(x(2))}转换为数组@(x) [ x(1)+x(2)^2 ; x(1)-2*(x(2))]?因为我想用fsolve非线性方程组来求解。

4

2 回答 2

2

用于func2str获取字符串中的函数定义并用于str2func获取所需的函数,如果A是包含函数句柄的元胞数组:

B = strcat(regexprep(cellfun(@func2str, A, 'uni', 0), '^@\(x\)', ''), ';');
F = str2func(strcat('@(x) [', B{:}, ']'));

现在F包含所需的函数句柄。

于 2013-09-04T08:50:06.640 回答
1

为什么要转换?为什么不使用类似的东西

% Your cell array
Fs = {@(x) x(1)+x(2)^2; @(x) x(1)-2*x(2)};

% Just use cellfun
solution = fsolve(@(y) cellfun(@(x) x(y), Fs), [0 0])
于 2013-09-04T09:57:30.920 回答