Я разрабатываю инструмент в 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](https://i.stack.imgur.com/5jfD5.png)
Это, вероятно, происходит, когда я вычисляю минимум, а результат не точно равен нулю, поэтому существует такое несоответствие.
Например я ставлю точки (0.0651,0.0651)
.Эта функция проверяет положение этой точки или точки, близкой к 0.0651
.Глядя на матрицы, я вижу, что ближайшим значением является 0.065076334365630
, что не совсем точно 0.0651
.Чтобы получить min = 0, я должен иметь внутри матриц значение 0.0651, и в этом случае у меня будут две точки перекрытия.Я не хочу увеличивать шаг, потому что, возможно, мог бы даже работать с этим полем, но, возможно, не с другим, плюс у меня будут очень большие матрицы, которые потребуют больших усилий для вычисления.Как я могу решить эту проблему?Есть ли другие способы сделать то же самое, не используя meshgrid, а то, что всегда работает?