图片缩略图

比较结构

version 2.0.0.0 (6.6 KB) by 迈克尔arant
递归地比较两个结构化变量,并注意两个结构的不同之处。

9.8 k下载

更新2015年8月30日

查看许可协议

这是一个全新的工具版本,基于朋友给我的关于如何让它更有用的评论,它提供了新的功能。建议是让应用程序以结构形式报告两个结构之间的共同内容和每个结构的独特内容——本质上,解析输入结构。列表输出现在使用一个单独的应用程序(list_sruct)执行。所以要比较两个结构,请使用comp_struct。要展开(解包)结构,请在每个输出上使用list_struct。这对于解决Brad Stiritz、David Groppe和David Provencher指出的问题也有很长的路要走。
如有需要,将旧代码作为参考。
__________________
2013年10月19日
这是对代码的更新,以便提供遇到的错误的更好列表。之前重写的明显限制在于数据的后期处理(感谢Brad Stiritz和Brett Shoelson提供的关于如何解决这个问题的有用评论)。新代码本质上是相同的算法(对记录错误的方式做了一些小的改变),但是增加了一个新的错误评估算法。这里最大的困难是管理结构不匹配的潜在组合。例如,代码可能会遇到以下问题:
A.a是类double, b.a是类char
A.b存在,b.b不存在
A(2)存在,b(2)不存在
A.c和b.c是同一类,但内容不同
A.d和b.d都是函数(甚至是相同的函数),但在不同的点进行计算
A.e是一个子结构,而b.e是一个double, char, cell, ....

新的输出试图通过开发一个有N行(用于N个错误)和3列(错误标签、结构1内容和结构内容)的单元格来管理所有这些组合。

注意:调用语法已经改变(新的输出变量),所以它不是前面代码的直接更新。如果当前正在使用前面的脚本,则需要更新调用函数。

_______________________________________
2013年4月29日
这是对代码的重新编写,利用MATLAB中的新功能,因为我在10年前编写了第一个版本。最初的版本只是我在绝望中写的东西,不是很优雅。这个版本应该更有用。原始版本包括为子孙后代。

调用语法与原始的类似,但现在你可以:
1.禁用所有屏幕打印输出,只打印缺失的字段,打印所有错误,或打印所有错误和匹配。
2.激活一个等待进度的工具条(如果你没有打印出错误并且你的结构比较大的话)
3.将所有错误收集到单个单元格中(而不是每个结构两个单元格)
4.结构顺序并不重要。工具查找匹配的字段。

感谢Brian的建议和验证测试。感谢David Groppe提供的错误输出建议。感谢David Provencher关于只输出的建议。感谢Keith Beardmore指出了排序顺序问题。
_______________________________________
原来的帖子:

结构化变量有利于组织数据和操作数据。然而,它们很难检查出错误或差异。函数允许将结构中的每个字段与单独结构中的相应字段进行检查。可能的结果是:
1.字段一致(存在并且具有相同的内容)
2.字段不一致(两者都存在,但内容/值不同)
3.字段仅存在于一种结构中
4.字段类型不同(变量类不一致)

引用作为

迈克尔arant(2021)。比较结构(//www.tianjin-qmedu.com/matlabcentral/fileexchange/22752-compare-structures), MATLAB中央文件交换。检索

MATLAB版本兼容性
创建R2012a
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!