Matlab网格步骤

时间:2018-05-16 09:34:34

标签: matlab plot

我正在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_computationsreal_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但总是有效的东西?

0 个答案:

没有答案