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

Wie werden multidimensionale Arrays mit einem Spaltenvektor

 

uzcyi
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 66
Anmeldedatum: 22.12.15
Wohnort: Nähe Pforzheim
Version: ---
     Beitrag Verfasst am: 10.04.2017, 13:18     Titel: Wie werden multidimensionale Arrays mit einem Spaltenvektor
  Antworten mit Zitat      
Wie werden multidimensionale Arrays mit einem Spaltenvektor multipliziert ?
Ansatz habe ich schon mal gemacht:


Code:

A=rand(3,4,400)
B= [1;1;1;1]

C = A(:,:,400)*B
 

bis hier funktioniert es einwandfrei nun jetzt kommt:
Code:

K>> A*B
 


Error using *
Arguments must be 2-D, or at least one argument must be scalar. Use
TIMES (.*) for elementwise multiplication.

Code:

K>> A.*B
 


Array dimensions must match for binary array op.

bzw:

Code:
C1 = A(:,:,1:400)*B


Error using *
Arguments must be 2-D, or at least one argument must be scalar. Use TIMES (.*) for elementwise multiplication.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.04.2017, 14:02     Titel: Re: Wie werden multidimensionale Arrays mit einem Spaltenvek
  Antworten mit Zitat      
Hallo uzcyi,

Du hast noch nicht erklärt, was Du als Ergebnis bekommen möchtest. Mathematisch ist eine Matrix-Vektor-Multiplikation definiert, bei der die Anzahl der Spalten der Matrix gleich der Anzahl der Zeilen des Vektor sein muss. In Matlab gibt es noch eine elementweise Mutliplikation.

Du könntest per permute(X, [1,3,2]) aus dem Array eine Matrix machen, dann die Standard-Matrix-Vektor-Multiplikation durchführen und später das Ergebnis wieder per reshape aufteilen.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 12.04.2017, 11:17, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
uzcyi
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 66
Anmeldedatum: 22.12.15
Wohnort: Nähe Pforzheim
Version: ---
     Beitrag Verfasst am: 10.04.2017, 18:15     Titel:
  Antworten mit Zitat      
Das möchte haben

C = A(:,:,1:400)*B
dass heißt einen Array mit 1200x1 Vektor sozusagen

im Prinzip könnte ich dies mit einer einfachen For-loop i=1:400 lösen, möchte es jedoch übersichtlicher und vektorisierend zeitsparende damit machen. Jedoch habe ich den nötigen know-how wissen nicht Jan.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.04.2017, 12:05     Titel:
  Antworten mit Zitat      
Hallo uzcyi,

Wenn Du die Schleifen-Methode postest, kann man direkt einen vektorisierten Code vorschlagen, der das gleiche Endergebnis liefert. Wenn man sich aber zunächst ausdenken, muss, was Du bekommen möchtest, ist das umständlich.

Code:
C = reshape(permute(A, [1,3,2]), [], 4) * B;

Dies wandelt das 3D-Array in eine Matrix um, so dass die Standard-Matrix-Vektor-Multiplikation wieder möglich wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
uzcyi
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 66
Anmeldedatum: 22.12.15
Wohnort: Nähe Pforzheim
Version: ---
     Beitrag Verfasst am: 14.04.2017, 17:58     Titel:
  Antworten mit Zitat      
Danke Jan Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 16.04.2017, 14:57 Uhr von denny
Von Objektorientierte Programmierung nach Programmierung
 
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.