Code covered by the BSD License  

Highlights from
Compare Nested Cell & Struct Arrays Recursively

Be the first to rate this file! 12 Downloads (last 30 days) File Size: 3.74 KB File ID: #27542

Compare Nested Cell & Struct Arrays Recursively

by Ameya Deoras

 

09 May 2010

Compare two cell or struct arrays and find exactly where they differ

| Watch this File

File Information
Description

This package contains two functions CELLEQ and STRUCTEQ which compare two cell arrays or two structures respectively. The cells/structs may internally contain more nested cell and struct arrays which are compared recursively.

Feature summary:
* Support for nested structures/cell arrays
* Return of full stack information on where the two cells/structs differ
* Control for comparison of Function handles within structs/cells
* Control for comparison of NaN properties

Usage:
[iseq, info]= celleq(cell1, cell2, funh2string, ignorenan)
[iseq, info] = structeq(struct1, struct2, funh2string, ignorenan)

* iseq is true if all elements and subelements of the two cells or structs are identical
* info is a structure that contains a field "Reason" which gives you a text stack of why the difference occurred as well as a field "Where" which contains the indices of the element and subelement where the comparison failed.
* (optional) funh2string, if true, instructs function handle comparisons to return true if the string representations of the function handles are the same.
* (optional) ignorenan, if true, will return true for nan == nan. By default both properties are set to false

Example:
>> figure;
>> g = surf(peaks(50));
>> rotate3d
>> hg1 = handle2struct(gcf);
>> set(g,'XDataMode', 'manual');
>> hg2 = handle2struct(gcf);

>> [iseq, info] = structeq(hg1, hg2)
iseq =
     0
info =
    Reason: [1x137 char]
     Where: '(1).properties(1).KeyPressFcn{1}'

>> [iseq, info] = structeq(hg1, hg2, true)
iseq =
     0
info =
    Reason: [1x188 char]
     Where: '(1).children(1).children(1).properties(1).XDataMode'

MATLAB release MATLAB 7.9 (2009b)
Other requirements The function STRUCTEQ requires CELLEQ
Tags for This File  
Everyone's Tags
Tags I've Applied
Add New Tags Please login to tag files.
Please login to add a comment or rating.
Tag Activity for this File
Tag Applied By Date/Time
utility Ameya Deoras 10 May 2010 12:13:14
struct Ameya Deoras 10 May 2010 12:13:14
cell Ameya Deoras 10 May 2010 12:13:14
eq Ameya Deoras 10 May 2010 12:13:14
compare Ameya Deoras 10 May 2010 12:13:14

Contact us at files@mathworks.com