Шаг сетки Matlab - PullRequest
       2

Шаг сетки Matlab

0 голосов
/ 16 мая 2018

Я разрабатываю инструмент в Matlab, где я использую meshgrid

    x= -a:a/101:a;
    y= -a:a/101:a;
[X,Y] = meshgrid(x,y);

, чтобы определить точки, где вычисляется поле E.Поэтому у меня есть E(X,Y), и, таким образом, для конкретной точки в сетке это будет связано со значением для поля.У меня есть функция, которая вычисляет E во всех точках

E = compute_field(X,Y)

Затем я делаю некоторые операции с этим полем (суммы и умножения) внутри другой функции, которая дает мне два результата, представляющих все возможные ошибки в двух направлениях.

[ERR_H,ERR_V] = ideal_computations(E,X,Y)

Пока проблем нет.

На следующем шаге моего инструмента я решил наложить две точки x, y, чтобы извлечь значение этого поля, чтобыу меня есть E(x,y) скаляр, а не матрица, как раньше

e = compute_field(x,y)

, и я делаю те же суммы и умножения, что и раньше.

[ERR_H,ERR_V] = real_computations(e,x,y)

На данный момент две функции ideal_computations и real_computations абсолютно одинаковы.Затем я проверяю, где E(x,y) находится внутри E(X,Y), вычисляя минимальное значение между ними, и извлекаю координаты, и проблема здесь.

[x1_est,x2_est] = compute_error(err_h,err_v,X,Y,ERR_H,ERR_V)
row = (size(ERR_H,1)+1)/2;
col = (size(ERR_V,2)+1)/2;

[~,m] = min(abs(ERR_H(row,:)-err_h));
[~,n] = min(abs(ERR_V(:,col)-err_v));

x1_est = X(n,m);
x2_est = Y(n,m);

Вероятно, у пары (X,Y) нет шага, чтобы идеально соответствовать (x,y), и я получаю это

enter image description here

Это, вероятно, происходит, когда я вычисляю минимум, а результат не точно равен нулю, поэтому существует такое несоответствие.

Например я ставлю точки (0.0651,0.0651).Эта функция проверяет положение этой точки или точки, близкой к 0.0651.Глядя на матрицы, я вижу, что ближайшим значением является 0.065076334365630, что не совсем точно 0.0651.Чтобы получить min = 0, я должен иметь внутри матриц значение 0.0651, и в этом случае у меня будут две точки перекрытия.Я не хочу увеличивать шаг, потому что, возможно, мог бы даже работать с этим полем, но, возможно, не с другим, плюс у меня будут очень большие матрицы, которые потребуют больших усилий для вычисления.Как я могу решить эту проблему?Есть ли другие способы сделать то же самое, не используя meshgrid, а то, что всегда работает?

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