WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Multiplikation der Elemente von A und B = C

 

Eddy1191
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2016, 21:15     Titel: Multiplikation der Elemente von A und B = C
  Antworten mit Zitat      
Hallo,
wie ihr im Titel schon sieht, geht es um die Multiplikation der einzelnen Elemente zweier Matrizen. Um mein Problem zu veranschaulichen, nenne ich euch erstmal meine Aufgabenstellung.

Programmieren Sie die Funktion MM(A,B) , die als Argumente 2 Matrizen A, B erhält und folgende Matrix zurückliefert:
Jedes Element der Matrix A wird mit der Matrix B multipliziert. Als Ergebnis erhalten Sie eine Matrix C, die anstelle eines Elementes ai,j aus A die Teilmatrix ai,jB enthält.
Hinweise: Bestimmen Sie zunächst die Dimensionen von A und B, sowie der neuen Matrix.
Verwenden Sie for-Schleifen. Setzen Sie C aus den Teilmatrizen ai,jB zusammen.
Beispiel:

A=[2,3], B=[1;4] = C=[2,3; 8,12] %1.

A[2,3; 5,6], B=[1;4] = C=[2,3 ; 8,12; 5,6; 20,24] %2.

A[2,3; 5,6], B=[1,2; 3,4] = C=[2,4,3,6; 6,8,9,12; 5,10,6,12; 15,20,18,24] %3.


Ich hoffe, dass ihr mir momentan noch folgen könnt. Also man muss bei der ersten (%1.) die Elemente von A und B so multiplizieren:

A=[2] * B[1] = C[2]
A=[2] * B[ 4] = C [8] und so weiter dann.


Hier ist meine momentane Vorgehensweise in Matlab dargestellt:

function [C]= MM(A,B)

E = size(A); % Dimensionen von A
F = size(B); % Dimensionen von B

for i=1:E(2)
for j=1:E(1)
C(2*j-1:2*j-1+F(2),i)=A(j,i).*B; %Formel funktioniert nur für %1 und %2


end
end
end


Für die ersten beiden Gleichungen (%1 und %2) funktioniert die Formel, jedoch nicht für die %3.
Ich hoffe, dass ihr mir hier weiter helfen könnt, einen geeigneten Lösungsansatz zu erstellen, da ich bereits länger an diese Aufgabe stecken bleibe. Sad Confused
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.04.2016, 22:05     Titel:
  Antworten mit Zitat      
Hallo,

mir ist nicht klar, nach welchen Kriterien die Zahlen angeordnet werden sollen.
Äußere Vektorprodukte könnten das ganze erleichtern:

Code:
C = cell(size(A));

for I = 1:size(A,1)
    for J = 1:size(A,2)
        C{I,J} = A(I,:)' * B(:,J)';
    end
end
C = cell2mat(C)


Hier stimmt "nur" die Anordnung noch nicht.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eddy1191
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2016, 22:24     Titel:
  Antworten mit Zitat      
Hallo Harald,
könntest du erläutern was du mit der Anordnung meinst?
Ich habe in deiner Funktion für A=[2,3] und für B[1;4] eingesetzt, jedoch bekomme ich leider eine Fehlermeldung, wobei das Ergebnis C[2,3; 8,12] sein muss.

Liebe Grüße
Eddy
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.04.2016, 22:37     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
könntest du erläutern was du mit der Anordnung meinst?

Wenn du den Code für das dritte Beispiel laufen lässt, kommen die richtigen Zahlen heraus, aber in der falschen Reihenfolge. Mir ist nicht klar, wie du auf deine Reihenfolge kommst.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Eddy1191
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 24.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2016, 11:04     Titel:
  Antworten mit Zitat      
A[2,3; 5,6], B=[1,2; 3,4] = C=[2,4,3,6; 6,8,9,12; 5,10,6,12; 15,20,18,24]

Also man muss für die erste Zeile für C 2*1 rechnen, dann 2*2, dann 3*1, dann 3*2
Für die 2. Zeile dann 2*3, dann 2*4, dann 3*3, dann 3*4 und so weiter dann.

Ich hoffe das es jetzt einigermaßen verständlicher ist, wie man für C auf diese Reihenfolge kommt.
Dabei wollte ich noch anmerken, dass ich eine Formel benötige, die jeweils alle 3 Beispiele ausrechnen kann, da dort mein größtes Problem liegt, eine einheitliche Formel zu bilden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.