Equality of a numeric list using a string
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jason
am 28 Jan. 2016
Beantwortet: Jason
am 28 Jan. 2016
I have a set of values fwhm that I then remove valyes lower than Y20. However, I use this in many places and sometimes want values > Y20
T=fwhm(fwhm>Y20);
Is there a way to pass the string for the equality, where in the case above I could pass either '>Y20' or '<Y20'?
Thanks
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 28 Jan. 2016
If Y20 is known at the time you decide whether you want > or <, then define a function:
selY20 = @(Var) Var(Var>Y20);
or
selY20 = @(Var) Var(Var<Y20);
depending on which one you want. Then your code would have
T = selY20(fwhm);
If you do not know Y20 at the time you make the decision, then at the time of the decision define a function
selY = @(Var, Y) Var(Var<Y);
or
selY = @(Var, Y) Var(Var>Y);
and code
T = selY(fwhm, Y20);
Or if you want to be more hard-core,
selY = @lt;
or
selY = @gt;
and code
T = fwhm(selY(fwhm, Y20));
A < B is the same internally as lt(A,B) and A > B is the same internally as gt(A,B)
0 Kommentare
Weitere Antworten (2)
Guillaume
am 28 Jan. 2016
Bearbeitet: Guillaume
am 28 Jan. 2016
I'd recommend you use function handles rather than strings:
comparisons = {@gt, @lt}; %gt is the function name of >, lt is the function name of <
selectedcomparison = 1; %1 is <, 2 is >
T = fwhm(comparisons{selectedcomparison}(fwhm, Y20)) %note that the brackets after {...} is a function call
edit: if you really want to use strings:
comparisons = {'<', '>'};
selectedcomparison = 1; %1 is <, 2 is >
compfn = str2func((comparisons{selectedcomparison});
T = fwhm(compfn(fwhm, Y20))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!