What does +(A>0) do?

8 vues (au cours des 30 derniers jours)
Mary
Mary le 11 Oct 2011
I'm an experienced Matlab user, but I came across a line of code that I don't understand:
A = +(A>0)
I know that the A>0 will find indices for values of A greater than zero, but any thoughts on what the +() does?
Thanks!

Réponse acceptée

David Young
David Young le 11 Oct 2011
Looks like someone is forcing the class of A to be double rather than logical.
A = double(A>0)
would have the same effect but would be much clearer, and therefore preferable.
  2 commentaires
Fangjun Jiang
Fangjun Jiang le 11 Oct 2011
That's a good argument, in terms of changing the data type of A.
David Young
David Young le 11 Oct 2011
Though I suppose if MATLAB ever changed its default numerical class from double to something else, the form +() would continue to mean "convert to default numerical class", whereas double() would convert to a specific but outdated class. This is, however, an unlikely scenario!

Connectez-vous pour commenter.

Plus de réponses (3)

Wolfgang Schwanghart
Wolfgang Schwanghart le 11 Oct 2011
I often do this to convert a logical matrix to double. However, I just tried and realized that this is slower than A = double(A>0).
A = rand(4000,4000)>0.5;
>> tic; B = double(A); toc
Elapsed time is 0.041147 seconds.
>> tic; B = +(A); toc
Elapsed time is 0.053846 seconds.
Again, I have learned something here.
  1 commentaire
Mary
Mary le 11 Oct 2011
Thanks -- this answer was also helpful and it's good to know which method is faster. I appreciate you taking the time to comment.

Connectez-vous pour commenter.


Fangjun Jiang
Fangjun Jiang le 11 Oct 2011
The "+" doesn't mean anything here. Probably somebody with C++ experience wrote it. You can try this example:
A=rand(3)-0.5;
A=+(A>0);
Think of it as
A=0+(A>0)

Amey
Amey le 11 Oct 2011
In the matrix A, it indicates which values are greater than zero. For example: A = [-3 -1 0 9 4 3 2]; The output of the command b = +(A>0) is: b = [0 0 0 1 1 1 1]
Below is another example for the operation. Consider the same matrix A = [-3 -1 0 9 4 3 2]; The output of the command b = +(A>-2) is: b = [0 1 1 1 1 1 1].

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by