jiewenji 发表于 2022-6-20 12:00:38

matlab创建函数为什么要用 “点”符号?

本帖最后由 jiewenji 于 2022-6-20 13:42 编辑

以下内容摘自matlab 官方文档:https://ww2.mathworks.cn/help/matlab/matlab_prog/creating-a-function-handle.html?searchHighlight=%E5%88%9B%E5%BB%BA%E5%87%BD%E6%95%B0&s_tid=srchtitle_%25E5%2588%259B%25E5%25BB%25BA%25E5%2587%25BD%25E6%2595%25B0_1

使用句柄调用函数的方式与直接调用函数一样。例如,假设您有一个名为 computeSquare 的函数,该函数定义为:
function y = computeSquare(x)
y = x.^2;
end

创建句柄并调用该函数以计算 4 的平方。

f = @computeSquare;
a = 4;
b = f(a)

我发现创建的函数是 y = x.^2;    但是我将函数内容给改成y = x^2;   计算结果还是16,没有任何变化。所以这里为什么要有一个 “点”呢?



再看下边这个例子。
https://i.bmp.ovh/imgs/2022/06/20/a21fee8f0798e3a6.png
fun = @(x) exp(-x.^2).*log(x).^2;

计算 x=0 至 x=Inf 的积分。
q = integral(fun,0,Inf)

这个fun函数为什么 .*log   而不直接使用*log 呢?在这个函数中我去掉点以后积分就会报错。
请问在此@x的作用是生命函数中哪一个字母才是变量,是么?

补充内容 (2022-6-20 21:36):
以 .*和 *为例,我看matlab的帮助,只是在处理矩阵 相乘的时候有差别。* 代表矩阵乘法 A*B 用A的行乘B的列。 而 .* 代表对应元素相乘A.*B代表A 和 B 每个对应元素相乘。

补充内容 (2022-6-20 21:37):
但还是不明白上面定义函数的时候为什么要用.*   这又不涉及矩阵

lhmhz 发表于 2022-6-29 20:23:48

matlab的运算,一般要求以数组的形式进行计算,为了区别矩阵运算,而采用点运算规则。
页: [1]
查看完整版本: matlab创建函数为什么要用 “点”符号?