setdiff error in some cases

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 Commenti

Stephen23
Stephen23 il 26 Set 2014
Modificato: Stephen23 il 26 Set 2014
This would be a great opportunity to use MATLAB's inbuilt debugging tools Set a breakpoint on/before the line that causes the error, and use the debugger workspace to investigate the variables (sizes, values, etc).
What is the intention of
C(1, :) = [];
dpb
dpb il 26 Set 2014
I'm not terribly surprised setdiff fails with an empty set as one of the inputs; the specific failure seems to be related to there being more than one element in the non-empty set given the case that succeeds.
Looks to me like one should special-case the code using the operation if it's necessary to have the case.
Always in a case such as this, ultimate response is TMW's interpretation of what their internal definition of accepted behavior should be so submit a support request at www.mathworks.com since it isn't documented.
Neesha
Neesha il 1 Ott 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 il 1 Ott 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.

Accedi per commentare.

 Risposta accettata

Peter Perkins
Peter Perkins il 2 Ott 2014

0 voti

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 Commento

Neesha
Neesha il 2 Ott 2014
Modificato: Neesha il 2 Ott 2014
Thanks, i have contacted technical support and submitted this.
ref:_00Di0Ha1u._500i0DabIS:ref

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su MATLAB in Centro assistenza e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by