What does +(A>0) do?

5 Ansichten (letzte 30 Tage)
Mary
Mary am 11 Okt. 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!

Akzeptierte Antwort

David Young
David Young am 11 Okt. 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 Kommentare
Fangjun Jiang
Fangjun Jiang am 11 Okt. 2011
That's a good argument, in terms of changing the data type of A.
David Young
David Young am 11 Okt. 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!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Wolfgang Schwanghart
Wolfgang Schwanghart am 11 Okt. 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 Kommentar
Mary
Mary am 11 Okt. 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.

Melden Sie sich an, um zu kommentieren.


Fangjun Jiang
Fangjun Jiang am 11 Okt. 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 am 11 Okt. 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].

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by