Code covered by the BSD License  

Highlights from
Compare Nested Cell & Struct Arrays Recursively

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

Compare Nested Cell & Struct Arrays Recursively

by

 

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 (R2009b)
Other requirements The function STRUCTEQ requires CELLEQ
Tags for This File   Please login to tag files.
Please login to add a comment or rating.

Contact us