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 comentarios

Stephen23
Stephen23 el 26 de Sept. de 2014
Editada: Stephen23 el 26 de Sept. de 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).
per isakson
per isakson el 26 de Sept. de 2014
What is the intention of
C(1, :) = [];
dpb
dpb el 26 de Sept. de 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 el 1 de Oct. de 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 el 1 de Oct. de 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.

Iniciar sesión para comentar.

 Respuesta aceptada

Peter Perkins
Peter Perkins el 2 de Oct. de 2014

0 votos

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 comentario

Neesha
Neesha el 2 de Oct. de 2014
Editada: Neesha el 2 de Oct. de 2014
Thanks, i have contacted technical support and submitted this.
ref:_00Di0Ha1u._500i0DabIS:ref

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre MATLAB en Centro de ayuda y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 26 de Sept. de 2014

Editada:

el 2 de Oct. de 2014

Community Treasure Hunt

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

Start Hunting!

Translated by