我需要建立一个非线性方程向量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
非线性方程组来求解。
问问题
2315 次
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 回答