比较结构

버전2.0.0.0(6.6 kb)작성자: 迈克尔arant
递归地比较两个结构化变量,并指出两个结构的不同之处。

다운로드수:10.2k

업데이트날짜:2015/8/30

라이선스보기

这是一个全新版本的工具,基于朋友给我的关于如何使它更有用的评论,具有新的功能。建议是让应用程序以结构形式报告两个结构之间的共同内容和每个结构的唯一内容——本质上是解析输入结构。列表输出现在使用一个单独的应用程序(list_sruct)执行。因此,要比较两个结构,请使用comp_struct。要展开(解包)结构,请对每个输出使用list_struct。这对于解决Brad Stiritz、David Groppe和David Provencher提到的问题也大有帮助。
如果需要,还包括旧代码作为参考。
__________________
10月19日
这是对代码的更新,以提供更好的所遇到的错误列表。之前重写的明显限制在于数据的后期处理(感谢Brad Stiritz和Brett Shoelson对如何解决这个问题的有用评论)。新代码本质上是相同的算法(对记录错误的方式做了一些小改动),但增加了新的错误评估算法。这里最大的困难在于管理结构不匹配的潜在组合。例如,代码可能会遇到如下问题:
a是类double, b是类char
ab存在,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.结构顺序并不重要。工具查找匹配的字段。

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

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

化学式용양식

迈克尔·阿兰特(2023)。比较结构(//www.tianjin-qmedu.com/matlabcentral/fileexchange/22752-compare-structures), MATLAB中央文件交换。검색됨

Matlab릴리스호환정보
개발환경:R2012a
모든릴리스와호환
플랫폼호환성
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!
버전 게시됨 릴리스정보
2.0.0.0之间

新版本,结果报告为结构(匹配,err1, err2)。结果可以用list_struct展开。

1.3.0.0

这是对代码的更新,以提供更好的所遇到的错误列表。

1.1.0.0

这是一个scratch重写的代码,利用MATLAB的新功能。这个版本应该更有用。

1.0.0.0