n维函数的matlab编码
我正在寻找一种在matlab中编写函数的简单方法,该函数将向量数组作为输入,并将向量数组作为输出 如果输入和输出数组较小,则很容易使用函数句柄进行编码: f=@u[u1,u2] 这种方法不适用于大向量,因为它不允许我在循环中指定输出数组的每个组件 我找到了一种让它工作的方法,但它非常难看:将整个函数作为字符串链接在一起,然后将其转换为函数:n维函数的matlab编码,matlab,function,Matlab,Function,我正在寻找一种在matlab中编写函数的简单方法,该函数将向量数组作为输入,并将向量数组作为输出 如果输入和输出数组较小,则很容易使用函数句柄进行编码: f=@u[u1,u2] 这种方法不适用于大向量,因为它不允许我在循环中指定输出数组的每个组件 我找到了一种让它工作的方法,但它非常难看:将整个函数作为字符串链接在一起,然后将其转换为函数: str2fun(strcat('@(u)[u(',int2str(1),'), u(',int2str(2),')]')) 例如: n=100;输入=零1
str2fun(strcat('@(u)[u(',int2str(1),'), u(',int2str(2),')]'))
例如:
n=100;输入=零1,n;
str=strcat'@u[cosu',int2str1',';
对于i=2:n-1
str=strcatstr,'cosu',int2stri',^',int2stri',';
终止
str=strcatstr,'cosu',int2strn',^',int2strn',];
f=str2funcstr;
芬普特
输出是1的100个元素向量
该代码生成一个函数句柄,该句柄接受一个n长向量并返回一个n长向量。
重要的是,我可以控制输出的每个元素应该依赖于输入的哪些元素
这种构造函数的方法看起来非常丑陋和复杂,我想知道是否有更好的方法在matlab中编写此类函数?您的代码可以矢量化如下:
f = @(u) cos(u).^(1:numel(u));
[1,1,1,1,1,1,1,…,1],如果执行,示例给出的是什么我认为这是一个最小的工作示例。该示例也适用于较长的函数,但数学公式计算替换越复杂,这种编码方式的可读性越差,越容易出错。你需要阅读。