Ich habe ein Mesh-Gitter definiert als
%Vor%und zwei Formen (in diesem Fall Ovale):
%Vor%Nun möchte ich alle Punkte finden, die in entweder oval ungleich Null sind. Ich habe es versucht
%Vor%aber da ich sie einfach addiere, wird der überlappende Bereich einen Wert von 2 anstelle der gewünschten 1 haben.
Wie kann ich alle Nicht-Null-Einträge in der Matrix auf 1 setzen, unabhängig von ihrem vorherigen Wert?
(Ich habe versucht normalized_union = union./union;
, aber dann am Ende mit NaN
in allen 0 Elementen, weil ich durch Null dividiere ...)
Erster Vorschlag: Verwenden Sie nicht union
als Variablennamen, da dies die integrierte Funktion union
. Ich würde vorschlagen, stattdessen den Variablennamen inEitherOval
zu verwenden, da dieser beschreibender ist ...
Nun haben Sie eine Möglichkeit, etwas zu tun, was abcd vorschlägt , in dem Sie Ihre Matrizen hinzufügen o1
und o2
und verwenden Sie den relationalen Operator ungleich :
Einige andere Möglichkeiten in derselben Art verwenden den logischen Operator not
oder die Funktion logical
:
Die kürzeste Lösung besteht jedoch darin, den logischen or
-Operator direkt anzuwenden o1
und o2
:
Dies führt zu einem Wert von 1, bei dem eine Matrix nicht Null und sonst Null ist.