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]
。但它不是每个坐标中最接近的一个。事实上,它不是任何坐标系中最接近的一个
您的代码可能会有更多的问题,但对于初学者来说,您应该研究如何确定距离。在你掌握了这一点之后,你应该尝试以最小的距离拾取点。只有在你掌握了这两个方面之后,你才应该尝试将所有东西都整合到你的其他东西中。一次做所有事情都没有意义。对不起,我没有回答这个问题。你介意为我们这些不懂的蠢人修改一下这个问题吗?