Получить значение функции - PullRequest
1 голос
/ 08 февраля 2012

Я работаю с квадратичной поверхностью f (w0, w1) в MATLAB, и я использовал meshgrid для создания этого. Вот код:

phi = 0.01;
M = 16;

[w0,w1] = meshgrid(-2:0.1:8 , -10:0.1:0);

f = (0.5+phi)*(w0.^2 + w1.^2) + w0.*w1*cos(2*pi/M) + 2*w1*sin(2*pi/M) + 2;

Итак, я хотел бы знать, как я могу получить значение функции f в точке (-1,9, -0,9), например.

Спасибо

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Предполагая, что f (-1,9, -0,9) = f (w0, w1)

[row0, col0] = find(w0==-1.9);
[row1, col1] = find(w1==-0.9);
ans = f(row1(1), col0(1));
1 голос
/ 08 февраля 2012

Вы можете либо напрямую вставить свои значения в функцию f:

w0 = -1.9;
w1 = -0.9;
f = (0.5+phi)*(w0.^2 + w1.^2) + w0.*w1*cos(2*pi/M) + 2*w1*sin(2*pi/M) + 2;

, либо использовать индексы по x и y:

x = -2:0.1:8;
y = -10:0.1:0;
[w0,w1] = meshgrid(x, y);
f = (0.5+phi)*(w0.^2 + w1.^2) + w0.*w1*cos(2*pi/M) + 2*w1*sin(2*pi/M) + 2;
f(find(y==-0.9), find(x==-1.9));

Оба метода вернут:

и = 5,1452

0 голосов
/ 08 февраля 2012

Я думаю, что лучше всего использовать анонимную функцию:

f = @(x,y) (0.5+phi)*(x.^2 + y.^2) + x.*y*cos(2*pi/M) + 2*y*sin(2*pi/M) + 2

f(-1.9,0.9)

x)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...