ismember legacy flag with older Matlab

6 vues (au cours des 30 derniers jours)
Hoo Pee
Hoo Pee le 25 Août 2014
Commenté : Friedrich le 25 Août 2014
If I use the legacy flag of ismember function in Matlab prior to 2012b like this
if ismember(A,B,'rows','legacy') do something... end
I get too many input arguments -error.
I'd like my code to work on both, earlier and newer Matlabs so how can omit the legacy flag if older matlab is used. I really don't want to make separate if-clauses in case of older and newer versions because there are so many of them.

Réponse acceptée

Friedrich
Friedrich le 25 Août 2014
Hi,
an IF clause is the only way here.
You could write your own small helper function which calls ismember and deals with the versions. So something like (haven't actually tried it but something like this should do it):
function [Lia,Locb] = myismember(A,B,flag)
if flag_was_provided AND MATLAB_version_is_smaller_than_8
[Lia,Locb] = ismember(A,B)
else
[Lia,Locb] = ismember(A,B,flag)
end
end
  2 commentaires
Hoo Pee
Hoo Pee le 25 Août 2014
This is a nice answer but there's an additional problem that I encountered. Some built-in function also use the 'legacy' flag (see e.g., image function). Overriding all these function seems quite troublesome.
I can always make additional version and flag checks to the built-in ismember-function and put he modified function to my search path. I just have this nagging feeling that it will come back at me someday with nasty consequences.
Friedrich
Friedrich le 25 Août 2014
But the built in functions in 14a are not the same in 12a or so. Saying that the image function in 12a does not pass down the 'legacy' flag. So you don't have to worry about that.
You would need to adjust your code only and replace your ismember call with a dummy function which handles the argument conversion. Basically do NOT overload ismember. Only adjust your code to not call ismember directly.

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by