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

Dimensionen von Matrizen

 

lusiess01
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2021, 00:50     Titel: Dimensionen von Matrizen
  Antworten mit Zitat      
Hallo Forum,

ich habe folgende Aufgabenstellung und weiß nicht mehr weiter wie ich die Dimensionen berechnen kann.

Zitat:

Schreiben Sie eine MATLAB-Funktion die zwei nxm Matrizen A und B als Parameter entgegen
nimmt vier Rückgabewerte liefert:
1. Die Größe der kleineren Dimension
2. Die Größe der größeren Dimension
3. Das Ergebnis der Matrix-Multiplikation (Dimensionen beachten!)
4. Das Ergebnis der elementweisen Multiplikation
Testen Sie Ihre Funktion mit func(A,B), func(A’,B’) und func(B,A).


Der Code den ich bis jetzt geschrieben habe bring die Fehlermeldung dass die Dimensionen überein stimmen müssen. Danach funktionier meine Abfrage nicht. HAt von euch jemand eine Idee?

Danke!

Code:

A=rand(4,3)
B=rand(2,3)

[Erg1 Erg2 Erg3 Erg4]=fctUE7(A, B)

function [FctErg1 FctErg2 FctErg3 FctErg4] = fctUE7(MatrixA, MatrixB)

    if ndims(MatrixA) < ndims(MatrixB)
        FctErg1=ndims(MatrixA)
        FctErg2=ndims(MatrixB)
       
    elseif ndims(MatrixB) < ndims(MatrixA)
        FctErg1=ndims(MatrixB)
        FctErg2=ndims(MatrixA)
       
    elseif ndims(MatrixB)== ndims(MatrixA)
        FctErg1=ndims(MatrixB)
        FctErg2=ndims(MatrixB)
        FctErg3=MatrixA*MatrixB
       
    end
   
    FctErg4=MatrixA.*MatrixB
end
 
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2021, 09:21     Titel:
  Antworten mit Zitat      
Hallo,

unter der kleineren und größeren Dimension würde ich die Zeilen- und Spaltenanzahl verstehen. Diese bekommst du mit size , anschließend min und max .

Für die Matrixmultiplikation * brauchen die Dimensionen nicht übereinzustimmen, sondern Spaltenanzahl der ersten Matrix und Zeilenanzahl der zweiten Matrix.
Für elementweise Multiplikation .* müssen die Dimensionen übereinzustimmen.

Ich würde FctErg3 und FctErg4 in irgendeiner Form initialisieren, damit etwas zurückgegeben werden kann, wenn eine der Multiplikationen nicht durchgeführt werden konnte, z.B.
Code:
FctErg3 = [];
FctErg4 = [];


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
lusiess01
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.03.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2021, 19:28     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke erstmal für die schnelle Antwort.

Ich habe den Code jetzt wie beschreiben abgeändert. Ich alles zwei Matrizen mit der gleichen Dimension erzeugen doch die Multiplikation funktioniert trotzdem nicht. Weder mit
Code:
noch mit
Code:
.

Code:

clear all
clc

A=rand(4,3)
B=rand(4,3)


[Erg1 Erg2 Erg3 Erg4]=fctUE7(A, B)

function [FctErg1 FctErg2 FctErg3 FctErg4] = fctUE7(MatrixA, MatrixB)
   
    FctErg1=[]
    FctErg2=[]
    FctErg3=[]
    FctErg4=[]
   
    if min(size(MatrixA)) < min(size(MatrixB))
        FctErg1=min(size(MatrixA))
        FctErg2=max(size(MatrixB))
       
    elseif min(size(MatrixB)) < min(size(MatrixA))
        FctErg1=min(size(MatrixB))
        FctErg2=max(size(MatrixA))
       
    elseif size(MatrixB) == size(MatrixA)
        FctErg1=min(size(MatrixB))
        FctErg2=max(size(MatrixA))
       
        FctErg3=MatrixA*MatrixB
        FctErg4=MatrixA.*MatrixB
    end
   
end
 


Zitat:
Error using *
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches
the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.

Error in MATLAB_Uebungen_03h_Siess>fctUE7 (line 32)
FctErg3=MatrixA*MatrixB

Error in MATLAB_Uebungen_03h_Siess (line 11)
[Erg1 Erg2 Erg3 Erg4]=fctUE7(A, B)
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.04.2021, 19:46     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt:
Zitat:
Für die Matrixmultiplikation * brauchen die Dimensionen nicht übereinzustimmen, sondern Spaltenanzahl der ersten Matrix und Zeilenanzahl der zweiten Matrix.

Das ist bei deinen Matrizen nicht der Fall.

.* würde übrigens schon funktionieren. Du versuchst nur zuerst * wobei der Fehler passiert, somit kommt MATLAB nicht mehr zu .*

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.