arrays - 处理函数 Matlab
问题描述
我开始在 Matlab 中使用函数句柄,我有一个问题,当我这样做时,Matlab 会计算什么:
y = (0:.1:1)';
fun = @(x) x(1) + x(2).^2 + exp(x(3)*y)
当我这样做时,Matlab 会计算什么:
fun = @(x) x + x.^2 + exp(x*y)
因为我正在评估这些函数的雅可比行列式(来自此代码)并且它给出了不同的结果。我不明白放 x(i) 或只放 x 的区别
解决方案
让我们定义一个向量vec
为vec = [1, 2, 3]
。
当您vec
在第一个函数 as 中使用它时results = fun(vec)
,程序将仅采用向量、含义和 的x(1) = vec(1)
特定x(2) = vec(2)
元素x(3) = vec(3)
。整个表达式将看起来像
results = vec(1) + vec(2).^2 + exp(vec(3)*y)
或更好
results = 1 + 2^2 + exp(3*y)
但是,当您使用第二个表达式 asresults = fun(vec)
时,它将vec
在所有情况下都使用整个向量
results = vec + vec.^2 + exp(vec*y)
或更好
results = [1, 2, 3] + [1^2, 2^2, 3^2] + exp([1, 2, 3]*y)
您也可以清楚地看到,在第一种情况下,我真的不需要关心矩阵维度,并且变量的最终维度results
与您的变量的维度相同y
。在第二个示例中情况并非如此,因为您将矩阵vec
和相乘y
,这(在此特定示例中)会导致错误,因为vec
变量具有维度1x3
和y
变量11x1
。
推荐阅读
- vb.net - 更改组合框下拉列表的边框颜色
- java - 如何在第一层类的方法体内使用嵌套类中的方法
- python - 突然我的 api_view 没有定义。为什么?
- c++ - 使用协程时 boost::asio 超时的最佳实践
- python - 创建队列系统,按照请求的资历顺序依次处理请求?
- jupyter-notebook - 使用 jupyter notebook 与序列匹配的引物
- ios - 如何将自定义 xcframework 添加到 xcode 自定义项目模板?
- tensorflow - 在 MobileNetV3 上进行迁移学习时 Keras 和 tensorflow 冲突
- amazon-web-services - 在 AWS 云环境中部署 Spring Batch 应用程序的最佳解决方案
- javascript - 合并对象内的所有数组