用matlab编写高斯函数f(x,y),并计算在(0,0),(0,1),(1,1)处的函数
时间: 2024-12-13 16:28:36 浏览: 2
在MATLAB中,你可以使用`gaussian`函数来创建二维高斯分布,然后通过点积操作计算特定点的值。高斯函数通常表示为:
\[ f(x, y) = \frac{1}{2\pi\sigma_x\sigma_y}e^{-\frac{(x-\mu_x)^2}{2\sigma_x^2}-\frac{(y-\mu_y)^2}{2\sigma_y^2}} \]
其中,`(μx, μy)`是均值,`\(\sigma_x\)` 和 `\(\sigma_y\)` 是标准差。假设我们要使用均值 `(0, 0)` 和标准差 `(1, 1)`,可以编写如下的代码:
```matlab
% 定义函数参数
mu = [0; 0]; % 均值 (x, y)
sigma = [1; 1]; % 标准差 (x, y)
% 定义高斯函数
function f = gaussian(x, y)
A = 1 / (2 * pi * sigma(1) * sigma(2));
ex = exp(-(x(1) - mu(1))^2 ./ (2 * sigma(1)^2)) .* exp(-(x(2) - mu(2))^2 ./ (2 * sigma(2)^2));
f = A * ex;
end
% 计算在特定点的函数值
[px, py] = ndgrid(-2:0.1:2, -2:0.1:2); % 创建网格用于评估函数
f_0_0 = gaussian(px, py); % 在(0,0)处
f_0_1 = gaussian([0 1], [py]); % 在(0,1)处
f_1_1 = gaussian(px, [py 1]); % 在(1,1)处
% 显示结果
imagesc(px, py, f_0_0), title('f(x,0)')
hold on
imagesc(px, py, f_0_1), title('f(0,y)')
hold on
imagesc(px, py, f_1_1), title('f(1,1)')
```
这段代码首先定义了高斯函数 `gaussian`,然后生成了一个网格对 `(x, y)` 范围内的函数值进行计算,并显示了在三个指定点 `(0,0)`, `(0,1)`, `(1,1)` 的函数值。
阅读全文