Matlab网格步长
我正在Matlab中开发一个工具,使用Matlab网格步长,matlab,plot,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] =
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)
目前,两个函数理想计算
和实际计算
完全相同。
然后我检查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)没有完美匹配的步骤,我明白了
这可能发生在我计算最小值时,结果不完全为零,因此存在这种不匹配
例如,我将点(0.0651,0.0651)
。此功能用于检查该点或接近0.0651
的点的位置。查看矩阵,我发现最接近的值是0.065076334365630
,这并不完全是0.0651
。为了得到min=0,我应该在矩阵内部设置值0.0651,在这种情况下,我将使两个点重叠。
我不想增加步长,因为可能甚至可以使用这个字段,但可能不能使用另一个字段,而且我将有一个非常大的矩阵,需要进行大量计算。
我怎样才能解决这个问题?除了使用meshgrid,还有其他方法可以做到这一点吗?如果不显示除调用
meshgrid
之外的任何代码,很难说,但是有两种想法:interp2
或者通过调用E
来生成函数,让它根据您想要的(x,y)
精确计算值。我添加了一些内容。我不想进入太多的细节,因为有很多功能,我不关心在这个级别。问题在于网格,我想如何在2D绘图中使用interp2?上的文档中有很多使用示例。