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 件のコメント

Stephen23
Stephen23 2014 年 9 月 26 日
編集済み: Stephen23 2014 年 9 月 26 日
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 2014 年 9 月 26 日
What is the intention of
C(1, :) = [];
dpb
dpb 2014 年 9 月 26 日
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 2014 年 10 月 1 日
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 2014 年 10 月 1 日
...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.

サインインしてコメントする。

 採用された回答

Peter Perkins
Peter Perkins 2014 年 10 月 2 日

0 投票

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 件のコメント

Neesha
Neesha 2014 年 10 月 2 日
編集済み: Neesha 2014 年 10 月 2 日
Thanks, i have contacted technical support and submitted this.
ref:_00Di0Ha1u._500i0DabIS:ref

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

タグ

タグが未入力です。

質問済み:

2014 年 9 月 26 日

編集済み:

2014 年 10 月 2 日

Community Treasure Hunt

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

Start Hunting!

Translated by