l = logical([1 0 1 1 ;...
1 1 1 0]);
A = [1 2 3 4;...
5 6 7 8];
A .* l % element-wise multiplication
kein Problem, du bist willkommen ;-) Akzeptiere, Frage geschlossen!
xD
EDIT
Ich fürchte, Stackoverflow eine Seite wurde, wo jeder versucht, Antworten zu schlagen anderen indem sie versuchen, eine längere und ausführlichere Antwort zu machen, auch wenn nicht im Zusammenhang, was ursprünglich GEFRAGT . Und nicht diejenigen, die eine schnelle, einfache und einfache Lösung innerhalb kurzer Zeit zu genau dieser spezifischen Frage liefern. Suever wird sofort zum Upvote, indem sie eine Frage beantwortet, die NICHT gestellt wurde, nur weil sie länger ist.
Ich werde auch das Spiel spielen und meine Antwort bearbeiten: Wenn Sie andere Standardoptionen haben wollen, dann 0, könnte man auch meine Lösung und Verwendung nehmen:
~l*default_value + A.*l
Ich möchte nur sagen: Es Ist möglich.
EDIT2
tic;
for i = 1:1000000
B = A.*l;
end;
toc
>> Elapsed time is 2.18214 seconds.
tic;
for i = 1:1000000
B=zeros(size(A));
B(l)=A(l);
end;
toc
>>Elapsed time is 13.9691 seconds.
für sich selbst wählen.
EDIT3 (Standardwert! = 0)
>> tic; for i = 1:1e6; B = A.*l+100*(~l); end; toc
Elapsed time is 4.17261 seconds.
>> tic; for i = 1:1e6; B=100*ones(size(A)); B(l)=A(l); end; toc
Elapsed time is 14.2126 seconds.
Oooh Gott, wie könnte ich so dumm sein. :(... trotzdem danke @tim :) – pkj
Ich akzeptiere die ans, aber ich erlaube den Leuten normalerweise zu antworten. – pkj
@pkj: Vergessen Sie es nicht. Keine anderen Antworten werden mehr kommen. Also upvote + akzeptieren. – tim