Оценка и отображение функций в MATLAB - PullRequest
1 голос
/ 07 мая 2010

Я пытаюсь отобразить следующую гауссовскую функцию в MATLAB (должен отображать в 3 измерениях), но я где-то делаю некоторые ошибки. Что не так?

sigma = 1
for i = 1:20
    for j = 1:20
        z(i,j) = (1/(2*pi*sigma^2))*exp(-(i^2+j^2)/(2*sigma^2));
    end
end
surf(z)

1 Ответ

1 голос
/ 07 мая 2010

Проблема, с которой вы, вероятно, сталкиваетесь, заключается в том, что вы оцениваете гауссиану в диапазоне от 1 до 20 как для i, так и j. Поскольку sigma равно 1, вы увидите только сегмент одной стороны гауссианы (не считая центра в [i,j] = [0,0]), а значения z от 3 до 20 в каждом направлении очень близки к 0.

Вместо использования для циклов, вы можете делать вещи «путем MATLAB», создавая матрицы значений x и y, используя функцию MESHGRID и выполняя поэлементные операции на них для вычисления и построения z:

[x,y] = meshgrid(-4:0.1:4);  %# Use values from -4 to 4 in x and y directions
z = (1/(2*pi*sigma^2)).*exp(-(x.^2+y.^2)./(2*sigma^2));  %# Compute z
surf(x,y,z);  %# Plot z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...