Verfasst am: 08.01.2016, 14:07
Titel: Differenz zwischen zwei Matrizen
Hallo ,
habe zwei Matrizen A und B , von diesen möchte ich die Differenz bilden mit einer for schleife. Der Grund weshalb ich es mit einer for schleife mache ist, das ich die Differenz von jeden Punkt vom Matrix A einzeln mit dem Matrix B ermitteln möchte.
Code:
A=(123 , 456 , 789);
B= ist eine beliebiges 10x10 matrix
Verfasst am: 08.01.2016, 16:55
Titel: Re: Differenz zwischen zwei Matrizen
Markus1995 hat Folgendes geschrieben:
Irgendwie klappt das an einer stelle nicht , kann mir bitte jemand meine Fehler sagen , bedanke mich jetzt schon für die Hilfe.
Was klappt wo nicht? Was erwartest du?
Bitte genau Fehlermeldung posten.
Außerdem ein lauffähiges Minimalbeispiel.
Woher kommt nn?
Nutze bitte die Codeumgebung, denn dein Quellcode ist offensichtlich durch einfügen von Smilies (Smile) nicht mehr lesbar.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Ich möchte am ende den minimalsten wert zwischen den beiden Matrizen ermitteln , aber dies geht nicht weil irgendwas an meinem for schleife nicht stimmt . Meine ziel ist es anhand einer for schleife den Differenz vom Matrix A und B zu ermitteln . Z.b Differenz zwischen A(1,1) und B , danach für A(1,2) und B immer so weiter.
nn war eine tipp Fehler.
da wo smile steht kommt ein Doppelpunkt
das wäre eine Beispiel code von mir , ich möchte jetzt immer den abstand von einem Punkt vom x1 , y1 und z1 und der gesamten matrix 2 bilden und danach den abstand mit dem zweiten Punkt und immer so weiter.
Ist die for schleife so richtig ?
Ich empfehle, das brutale "clear all" grundsätzlich weg zu lassen. Es ist nicht nützlich sämtliche Variablen im Workspace zu löschen, die geladenen Funktionen aus dem Speicher zu entfernen, so dass sie zeitraubend wieder von der Festplatte gelesen werden müssen, alle Debugger-Breakpoints zu löschen und die persistenten Variablen ebenfalls. Das ist einfach eine unnütze Zeitverschwendung und erschwert das Debuggen.
Code:
% Statt:
tmp=abs(A(i,j)*ones(n)-B);
% Kann man effizienter schreiben:
tmp=abs(A(i,j) - B);
danke für euere Hilfe , hat mir schon gut geholfen, ich hätte da noch eine frage wie ist es wenn ich noch y und z Komponente habe und diese auch in die for schleife reinschreiben möchte , kann ich es dann so schreibe ?
Code:
A=ones(17,360);
n=size(x,1);
v=zeros(size(x2,1),size(x2,2),2);
for i=1:size(x2,1) for j=1:size(x2,2)
diff_x=(x2(i,j)*A)-x1;
diff_y=(x2(i,j)*A)-y1;
diff_z=(z2(i,j)*A)-z1;
summe_diff= (diff_x+diff_y+diff_z);
summe_diff1=abs(summe_diff);
[~,idx1]=min(summe_diff1);
[~,idx2]=min(min(summe_diff1));
v(i,j,1)=idx1;
v(i,j,2)=idx2;
end end
Meine Überlegung ist das ich die x y und z Komponenten voneinander abziehen und dann die Differenz zusammen addiere und da wo es am geringsten ist habe ich mein minimalen abstand.
Es sind ja zwei Plots mit unterschiedlichen Dimensionen und da wo die Differenz von den x y z Koordinaten am geringsten ist habe ich den geringsten abstand.
In welcher Norm misst Du denn den "Abstand"? Wenn es um die euklidische Distanz geht, ist es nicht das Minimum der Summe der Differenzen der Komponenten, sondern der Quadrate dieser Differenzen.
Gruß, Jan
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.