setdiff error in some cases

1 view (last 30 days)
Neesha
Neesha on 26 Sep 2014
Edited: Neesha on 2 Oct 2014
Hi I am using setdiff in my code and i am getting 'Improper assignment with rectangular empty matrix' error in a particular case , why and how to solve this? my code is as below:
A = dataset();
A.Location = {'south'};
A.Number = 3;
B= dataset();
B.Location = {'north'};
B.Number = 3;
diff1 = setdiff(A, B); %THIS EXECUTES JUST FINE
C= dataset();
C.Location = {'north'};
C.Number = 3;
C(1, :) = [];
D= dataset();
D.Location = {'west'};
D.Number = 5;
D.Location(2, 1) = {'north'};
diff2 = setdiff(C, D); %THIS EXECUTES JUST FINE
diff3 = setdiff(C, B); %THIS GIVES ME ERROR MENTIONED ABOVE, WHY?
  5 Comments
Neesha
Neesha on 1 Oct 2014
Stephen Cobeldick : Yes I have, and that is how i came up with example here with the code.
per isakson : just trying to delete a row, to end up with one row in the dataset
dpb : I am not sure what you meant by 'element' but i think you are describing the problem correctly that setdiff fails when one is empty and not-empty has one row. it does work though with empty dataset if non-empty ha more than one row. What is TMW?
dpb
dpb on 1 Oct 2014
...What is TMW?...
The Mathworks, vendors of Matlab. Shorthand for the suggestion you contact official support at www.mathworks.com with a support request for an official interpretation of the behavior observed if you think it's important that the null input case not fail.

Sign in to comment.

Accepted Answer

Peter Perkins
Peter Perkins on 2 Oct 2014
Neesha, this appears to be a bug when one of the datasets has zero rows and the other has exactly one. A valid edge case to be sure, but somewhat obscure. I will make a note to adress this bug.
  1 Comment
Neesha
Neesha on 2 Oct 2014
Edited: Neesha on 2 Oct 2014
Thanks, i have contacted technical support and submitted this.
ref:_00Di0Ha1u._500i0DabIS:ref

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!