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

zwei Vektoren Plotten

 

ccrl
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 05.11.2012, 18:55     Titel: zwei Vektoren Plotten
  Antworten mit Zitat      
Hallo zusammen,

ich habe ein Problem beim plotten folgender Funktion:

r=1;a=0.01:0.01:1;
x=a/r %in Aufgabenstellung so vorgegeben
y=a/r * SUMME[ erfc ((2n+1)a-r)/(2sqrt(Ta²)) - erfc ((2n+1)a-r)/(2sqrt(Ta²))]

Ich weiß mir nicht anders zu helfen, als zwei Lösungsvektoren mit 100 Feldern zu erstellen. Aber ich scheitere daran, diese beiden Vektoren zu plotten.

plot(x,y) liefert komischer Weise Geraden.

Könnt ihr mir da helfen?

Gruß
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: 05.11.2012, 21:59     Titel: Re: zwei Vektoren Plotten
  Antworten mit Zitat      
Hallo ccrl,

Was sind "zwei Lösungsvektoren mit 100 Feldern"?
Wieso scheiterst Du daran, die Vektoren zu plotten? Was geschieht denn? Bekommst Du eine Fehlermeldung?

Bitte poste den Code, den Du benutzt. Andernfalls können wir nicht nachvollziehen, weshalb Du Geraden bekommst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 06.11.2012, 11:36     Titel:
  Antworten mit Zitat      
Moin Jan,

danke für deine schnell antwort. Ich habe gerade einen Fehler in meinem Code entdeckt, den ich vorher (trotz intensiver Kontrolle) nicht gefunden habe.
Das Problem ist jedoch geblieben. Ich versuche es an einem ganz simplen Beispiel zu illustrieren, da ich glaube, dass mein Code nur verwirren würde (MatLab-Frischling).

Problem:
Angenommen ich habe die Funktion: y(x)=x
Nun erstelle ich die zwei Vektoren x und y.

x=0:10
y=enthält auf der Stelle i den Funktionswert, also y(i)

x=[0 1 2 3 4 5 6 7 8 9 10]
y=[0 1 2 3 4 5 6 7 8 9 10] %Bei y(x)=x

Kann ich diese zwei Vektoren darstellen, sodass sie die Gerade y(x)=x gezeigt wird?

Danke im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.11.2012, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

sicher geht das:
Code:


Aber dein Problem war doch gerade, dass du eine Gerade bekommst, obwohl du keine wolltest?

Zu deiner ursprünglichen Frage: wenn du diese Summe berechnest, ist sie ja nicht mehr von den x-Werten abhängig, also konstant, also bekommst du eine Gerade.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 06.11.2012, 12:14     Titel:
  Antworten mit Zitat      
okay also hier nun mein Code^^

Code:

r=1;s=0;ind=1;

for a=0.01:0.01:1
        summe=0;
        for n=1:10000
            s=erfc(((2*n+1)*a-r)/(2*sqrt(T(i)*a^2)))-erfc(((2*n+1)*a+r)/(2*sqrt(T(i)*a^2)));
            summe=summe+s;
        end
        y(ind)=a/r*summe;
        x(ind)=a/r;
        ind=ind+1;
        clear summe;        
end
plot(x,y)


Ich bekomme inzwischen auch ein Ergebnis, aber es entspricht nicht dem, was ich haben möchte^^. Aber immerhin sind es keine Geraden mehr.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Ist ja schön, nur:
- was ist T?
- was ist i?
- soll es wirklich T(i) sein, oder nicht T(n)?
- was willst du denn bekommen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 06.11.2012, 12:26     Titel:
  Antworten mit Zitat      
Bekommen möchte ich ein Diagramm mit a/r auf der x-Achse. Die Funktion für y lautet:
y=a/r * SUMME[ erfc ((2n+1)a-r)/(2sqrt(Ta²)) - erfc ((2n+1)a-r)/(2sqrt(Ta²))]

T ist ein Vektor, der im Vorfeld eingegeben wird. Für jedes Element von T soll ein Graph erstellt werden. Es sollen also mehrere Graphen in einem Diagramm abgebildet werden. Daher der "hold;"-Befehl.

Code:

for i=1:spaltenT
    for a=0.01:0.01:1
        summe=0;
        for n=1:10000
            s=erfc(((2*n+1)*a-r)/(2*sqrt(T(i)*a^2)))-erfc(((2*n+1)*a+r)/(2*sqrt(T(i)*a^2)));
            summe=summe+s;
        end
        y(ind)=a/r*summe;
        x(ind)=a/r;
        ind=ind+1;
        clear summe;        
    end
    plot(x,y)
    if(i==1)
        hold;
    end
end)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.11.2012, 12:50     Titel:
  Antworten mit Zitat      
Hallo,

dann willst du wohl nicht die Daten für verschiedene T aneinanderhängen, sondern jeweils x und y neu erstellen. Das "ind=1" muss also an den Anfang der Schleife über i.

Zudem ist MATLAB vektorisiert, d.h. es können Operationen auf Vektoren durchgeführt werden. Das solltest du ausnutzen, anstatt so viele for-Schleifen zu schachteln.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 06.11.2012, 13:43     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Zudem ist MATLAB vektorisiert, d.h. es können Operationen auf Vektoren durchgeführt werden. Das solltest du ausnutzen, anstatt so viele for-Schleifen zu schachteln.


Hallo Harald,

danke schon mal für deine Hilfe. Aber wie meinst du, würden mir Vektor-Operationen bei meinem Problem helfen? Bzw wie sollte ich sie anwenden?

Gruß
Carl
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.11.2012, 14:13     Titel:
  Antworten mit Zitat      
Hallo,

z.B. so:

Code:
T = 1:5; r=1;s=0;ind=1;
a=0.01:0.01:1;
x = a/r;
n=1:10000;
for i=1:5
    summe = zeros(size(a));
    for k = 1:length(a)
        summe(k)=sum(erfc(((2*n+1)*a(k)-r)/(2*sqrt(T(i)*a(k)^2)))-...
            erfc(((2*n+1)*a(k)+r)/(2*sqrt(T(i)*a(k)^2))));
    end
    y=a/r.*summe;    
    plot(x,y)
    if(i==1)
        hold on;
    end
end
hold off


Wenn du "hold on" durch "hold all" ersetzt, verwendet MATLAB noch verschiedene Farben.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 01.11.12
Wohnort: Braunschweig
Version: R2011b
     Beitrag Verfasst am: 06.11.2012, 15:01     Titel:
  Antworten mit Zitat      
Cool, vielen Dank für deine Hilfe Harald!
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.