for i=1:m
for j=1:n
if(J_roh(2*i,2*j-1)<10^-14)
w1(i,j,1) = 1;
... elseif(abs(J_roh(2*i,2*j)-J_roh(2*i-1,2*j-1))<10^-14)
w1(i,j,1) = 1;
... else
w1(i,j,1)= 2*J_roh(2*i-1,2*j)/sqrt((2*mu1(i,j)-2*J_roh(2*i-1,2*j-1))^2+4*J_roh(2*i-1,2*j).^2);
... end end end
Das Prinzip sollte klar sein. Es würde mich nicht wundern, wenn ich bei dieser Index-Schlacht einen Tippfehler gemacht habe. Bitte prüfe das nochmal nach.
Gruß, Jan
studi13
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 06.06.2013, 14:39
Titel:
Super, vielen vielen Dank!
studi13
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.06.2013, 12:03
Titel:
Hallo zusammen,
ich habe nochmal eine Frage:
Ist es auch hier möglich die for-Schleife zu ersetzen:
Code:
for i=1:m
for j=1:n
A(i*(1:2),j*(1:2) = imfilter(A(i*(1:2),j*(1:2), maske, sigma) end end
Das ist ein merkwürdiges Programm, da einerseits ein paar Klammern feheln, andererseits wird z.B. A(2,2) mehrfach berechnet und auch überschrieben. effizient ist das also nicht.
Gruß, Jan
studi13
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.06.2013, 07:22
Titel:
Ja ...., war auch kompletter schwachsinn :/ Sorry. So jetzt nochmal richtig:
Code:
for i=1:m
for j=1:n
A((2*i-1)+(0:1),(2*j-1)+(0:1)) = imfilter((2*i-1)+(0:1),(2*j-1)+(0:1), maske, sigma) end end
Ich hoffe das macht jetzt mehr Sinn. Aber sicherheitshalber nochmal in Worten. Die Matrix besteht aus m*n 2x2-Matrizen. Und diese sollen mit 'imfilter' bearbeitet und überschrieben werden.
Ich zumindest verstehe nicht, was Du erreichen möchtest. Ich kenne IMFILTER mit den Inputs IMFILTER(A,H) und noch den Options. Du rufst es mit zwei Vektoren auf und die Werte von "maske" und "sigma" sind wahrscheinlich wichtig.
Zitat:
Die Matrix besteht aus m*n 2x2-Matrizen.
Wenn Du m*n 2x2 Matrizen hast, wäre ein [m x n x 2 x 2] Array nicht sinnvoller?
Gruß, Jan
studi13
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.06.2013, 14:44
Titel:
Ja -.- mein Code war auch wieder falsch...
Code:
for i=1:m
for j=1:n
A((2*i-1)+(0:1),(2*j-1)+(0:1)) = imfilter(A((2*i-1)+(0:1),(2*j-1)+(0:1)), maske, sigma) end end
Also A((2*i-1)+(0:1),(2*j-1)+(0:1))
Und für diese 2x2 Matrizen werden gefaltet.
Imoment ist mein A .
Könnte es auch als [m x n x 2 x 2] Array schreiben. Wäre das ein Vorteil.
Ist das jetzt Verständlicher oder soll ich alles nochmal strukturiert erklären?!
studi13
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.06.2013, 15:53
Titel:
Okay, klar ist es sinvoller es als [m x n x 2 x 2] array zu machen.
Weil dann kann ich ja wieder über die Indizes laufen lassen, z.B.
A(:,:,(1:2),(1:2)) ...
Ich glaube der Tipp hat schonmal geholfen. Ich werde mal rumprobieren!
Vielen Dank nochmal!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.