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 件のコメント
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
2014 年 9 月 26 日
What is the intention of
C(1, :) = [];
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
2014 年 10 月 1 日
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.
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で MATLAB についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!