【问题标题】:Matlab- finding the smallest deviation in a structMatlab-找到结构中的最小偏差
【发布时间】:2015-09-03 12:10:01
【问题描述】:

我有一个这样的结构 mesh.m_1_0.Deformation_Entformung;

第二个字段是从m_1_0m_3_5 的结构,分 6 步;

Deformation_Entformung 是一个 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

代码运行,但问题是答案始终是矩阵Deformation_Entformung 的第一行。 如果有人能给我一个提示,我会很高兴。

【问题讨论】:

  • 对不起,我没有得到这个问题。您介意编辑问题,为我们不懂的愚蠢的人解释吗?

标签: matlab struct find aggregate-functions standard-deviation


【解决方案1】:

嗯,首先你把索引和值混在一起。 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 20] 更接近[0 0 0]。但它不是每个坐标中最接近的。事实上,它不是任何坐标中最接近的。

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

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2013-03-14
    • 1970-01-01
    • 2012-08-16
    • 1970-01-01
    • 2013-02-20
    • 2011-10-31
    • 2023-03-18
    • 2016-07-06
    相关资源
    最近更新 更多