Matlab-在结构中寻找最小偏差

Matlab-在结构中寻找最小偏差,matlab,struct,find,aggregate-functions,standard-deviation,Matlab,Struct,Find,Aggregate Functions,Standard Deviation,我有一个这样的结构mesh.m\u 1\u 0.Deformation\u Entformung 第二个字段是从m_1_0到m_3_5的6步结构 变形元素是一个有6列和325562行的矩阵,其中前3列包含坐标(x、y、z) 现在我对最接近(33.5-88.7801,-0.4480)的坐标感兴趣 这是我的代码: SNames = fieldnames(mesh); % SName = m_1_0,m_1_5...m_3_5 for loopIndex = 1:numel(SNames)

我有一个这样的结构
mesh.m\u 1\u 0.Deformation\u Entformung

第二个字段是从
m_1_0
m_3_5
的6步结构

变形元素是一个有6列和325562行的矩阵,其中前3列包含坐标(x、y、z)

现在我对最接近(33.5-88.7801,-0.4480)的坐标感兴趣

这是我的代码:

SNames = fieldnames(mesh); % SName = m_1_0,m_1_5...m_3_5  
    for loopIndex = 1:numel(SNames) 
            stuff = mesh.(SNames{loopIndex}).Deformation_Entformung; 

            mesh.(SNames{loopIndex}).('Deformation_Entformung_Koordi')=...
            stuff(min(stuff(:,1)-33.5) & min(stuff(:,2)--88.7801) & ...
            min(stuff(:,3)-0.4480), :);
    end
代码运行,但问题是答案总是矩阵的第一行
变形\u Entformung

如果有人能给我一个提示,我会很高兴的。

好吧,首先你把指数和值混在一起了。
min(stuff)
返回
stuff
的最小值。所以当你写
stuff(min(stuff))
的时候,那肯定不是你想要它做的

其次,如果
min(stuff(:,1)-33.5)
实际返回一个索引(它没有),那么无论您搜索
min(stuff(:,1)+100)
还是
min(stuff(:,1)-500000)
,索引都是相同的。因此,该程序仍然不会执行您希望它执行的操作

此外,从数学角度来看,您试图搜索最近点的方式甚至不起作用(即使您的编程没有错误)。最近的点不一定是每个坐标中最近的点。例如,
[1 1 1]
肯定比
[20 0 0]
[0 20 0]
[0 0 0 20]
更接近
[0 0 0 0 0 0]
。但它不是每个坐标中最接近的一个。事实上,它不是任何坐标系中最接近的一个


您的代码可能会有更多的问题,但对于初学者来说,您应该研究如何确定距离。在你掌握了这一点之后,你应该尝试以最小的距离拾取点。只有在你掌握了这两个方面之后,你才应该尝试将所有东西都整合到你的其他东西中。一次做所有事情都没有意义。

对不起,我没有回答这个问题。你介意为我们这些不懂的蠢人修改一下这个问题吗?