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

Anfängerfrage

 

Gast Pascal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2008, 10:27     Titel: Anfängerfrage
  Antworten mit Zitat      
moinsen liebe leute,

ich bin n matlabanfänger und hab ne frage. wie schreibe ich in eine m-file
eine matrix die mit einem vektor(der mit werten gefüllt ist die von einer variable (zb t) abhängen) miteinander multipliziere und im anschluss schön plotte? danke


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 06.01.2008, 11:37     Titel:
  Antworten mit Zitat      
Hi,

ich weiß nicht, ob ich Dich richtig verstanden habe, aber
guck Dir mal das hier an:
Code:
clear all;
clc;

t=3;

A=[1 2 3;
        4 5 6;
        7 8 9];
b=[t .5*t 2*t]';

Ab=A*b


Erklär mal genauer was Du plotten willst.

Viele Grüße
nschlange
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast Pascal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2008, 17:51     Titel:
  Antworten mit Zitat      
ja quasi. funktioniert des auch mit dementsprechenden sinus funktionen im vektor? drei kurven will ich dann plotten. und zwar des ergebnis aus der multiplikation.
aber danke für die schnelle antwort
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 06.01.2008, 18:00     Titel:
  Antworten mit Zitat      
Ja, für eine ausführlichere Antwort müsstet Du Deine Frage
aber ein bisschen präzisieren.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast Pascal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2008, 18:25     Titel:
  Antworten mit Zitat      
ich glaub am besten mach ichs mit nem beispiel

t soll die werte 1 bis zehn durchlaufen in einer for-loop

3,3 Matrix mit konstanten zahlenwerten

vektor mit bsp [sin(t); exp(t); 3t^3]

das ergebnis in abhängigkeit von t dann plotten. wie funktioniert das?
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 06.01.2008, 18:48     Titel:
  Antworten mit Zitat      
Schleife ist nicht nötig.

Code:
clear all;
clc;

A=[ 1 2 3;
    4 5 6;
    7 8 9];

t=0:0.1:2;
b=[ sin(t);
    exp(t);
    3.*t.^3];
M=A*b;
plot(t,M(1,:),t,M(2,:),t,M(3,:));

A und t hab ich jetzt mal so gewählt, dass man im Plot noch
Unterschiede erkennen kann.

Meinst Du so?

Viele Grüße
nschlange
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast Pascal

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2008, 14:28     Titel:
  Antworten mit Zitat      
Ja schon, aber könntetste mir trotzdem mal zeigen wie des mit ner schliefe funktioniert? so soll ich es machen. aber danke
 
nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.318
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 07.01.2008, 17:16     Titel:
  Antworten mit Zitat      
Hi,

hier der Code devektorisiert:
(Als Vektorisieren bezeichnen man im Matlab-Kontext
das Anpassen des Codes, so dass man auf Schleifen
verzichten kann. Im Allgemeinen sind die Operationen
von Matlab vektortauglich und schneller als eine
selbstgebastelte Lösung mit Schleifen. Man sollte aus
Geschwindigkeitsgründen also soweit wie möglich auf
Schleifen verzichten.)

Code:
clear all;
clc;

A=[ 1 0.0005 0.0005;
    1 0.0005 0.005;
    2 0 0.001];

t=0:0.01:10;
b=[ sin(t);
    exp(t);
    3.*t.^3];
[AZeilen,ASpalten]=size(A);
tLaenge=length(t);
M=zeros(AZeilen,tLaenge);
tic
for k=1:tLaenge
    for i=1:AZeilen
        for j=1:ASpalten
            M(i,k)=A(i,:)*b(:,k);
        end
    end
end
toc
figure;
plot(t,M(1,:),'b');
figure;
plot(t,M(2,:),'r');
figure;
plot(t,M(3,:),'g');


Mit tic und toc kannst Du Dir die verbrauchte Zeit
zwischen den Befehlen anzeigen lassen.
Vergleich das mal mit dem anderen Programm
bei größerer Matrix A und Vektor b oder
größerem t (z.B. 0:0.01:100).
Das Skalarprodukt in der Schleife
Code:
M(i,k)=A(i,:)*b(:,k);

müsstest Du ja dann konsequenter Weise auch
noch als Schleife programmieren.
Versuch das mal.

Viele Grüße
nschlange
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
Verschoben: 17.04.2009, 12:06 Uhr von Bijick
Von Sonstige MATLAB Fragen 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.