n维函数的matlab编码

n维函数的matlab编码,matlab,function,Matlab,Function,我正在寻找一种在matlab中编写函数的简单方法,该函数将向量数组作为输入,并将向量数组作为输出 如果输入和输出数组较小,则很容易使用函数句柄进行编码: f=@u[u1,u2] 这种方法不适用于大向量,因为它不允许我在循环中指定输出数组的每个组件 我找到了一种让它工作的方法,但它非常难看:将整个函数作为字符串链接在一起,然后将其转换为函数: str2fun(strcat('@(u)[u(',int2str(1),'), u(',int2str(2),')]')) 例如: n=100;输入=零1

我正在寻找一种在matlab中编写函数的简单方法,该函数将向量数组作为输入,并将向量数组作为输出

如果输入和输出数组较小,则很容易使用函数句柄进行编码:

f=@u[u1,u2] 这种方法不适用于大向量,因为它不允许我在循环中指定输出数组的每个组件

我找到了一种让它工作的方法,但它非常难看:将整个函数作为字符串链接在一起,然后将其转换为函数:

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],如果执行,示例给出的是什么我认为这是一个最小的工作示例。该示例也适用于较长的函数,但数学公式计算替换越复杂,这种编码方式的可读性越差,越容易出错。你需要阅读。