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

3 Kurven in einem Plot Linien verbinden nicht

 

sawyer_ma
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2016, 19:35     Titel: 3 Kurven in einem Plot Linien verbinden nicht
  Antworten mit Zitat      
Hi alle zusammen,

Hallo, habe ich die Block unten korrekt geschrieben damit dieser mir einen Plot aller drei Kurven macht? Weil Matlab mir einfach nicht die Punkte verbinden will, egal was ich zwischen die Anweisung schreibe. Was mache ich falsch??


Code:


figure(1)


for W = Wsmin : 0.001 : Wsmax
Z1 =  (W/h)/(sqrt(Er1-2.06+0.85*(W/h)^2))

Z2 =  (W/h)/(sqrt(Er2-2.06+0.85*(W/h)^2))

Z3 =  (W/h)/(sqrt(Er3-2.06+0.85*(W/h)^2))

hold on
plot(W, Z1,'r--o', W, Z2,'b--o', W, Z3,'g--o')
legend('Z0','Location','North')
title('Characteristic Impedance')
xlabel('Weite')
ylabel('Z0')
end

 



Vielen Dank für eure Hilfe.
Grüße
sawyer
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

falls das Problem ist, dass die Linie nicht durchgezogen ist:
-- steht für gestrichelt, - für durchgezogen.

Ansonsten ist mir das Problem nicht klar. Lauffähig ist dein Code ja leider nicht.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2016, 12:38     Titel:
  Antworten mit Zitat      
Also ich verstehe das nicht.

Code:


clc;
clear all;
format long;

f       =   2.45e9;                  % Frequenz
c0      =   299.792458e6;            % Lichtgeschwindigkeit
t       =   35e-6;                   % Leitungsschichtdicke
Z0      =   119.9169832*pi;          % Free Space Impedance
lambda0 =   c0/f;                    % Lambda 0

h = 0.5;
W = 1e-3;

Wsmin = 0.0015*lambda0
Wsmax = 0.075*lambda0

Er1 = 2.22;
Er2 = 3.2;
Er3 = 3.8;

figure(1)
for W = Wsmin : 0.0001 : Wsmax
Z1 = (lambda0*W/h)/(sqrt(Er1-2.06+0.85*(W/h)^2))


Z2 = lambda0*(W/h)/(sqrt(Er2-2.06+0.85*(W/h)^2))


Z3 = lambda0*(W/h)/(sqrt(Er3-2.06+0.85*(W/h)^2))

hold on
plot(W, Z1,'r--', W, Z2,'b-o', W, Z3,'g-o')
%axis([-2e-3,10e-3,-1,250])
legend('Z0','Z1','Z2','Location','North')
title('Characteristic Impedance')
xlabel('Weite')
ylabel('Z0')
end
 


Sobald ich ´r--´schreibe zeichnet mir der Plot keinen Graph mehr. nur bei 'b-o‘ spuckt er einen aus aber leider mit den dicken Kreisen. Was mache ich den falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

das hatte ja überhaupt nichts damit zu tun, dass es mehrere Kurven waren.

Du übergibst immer nur einen Punkt an plot. Eine Verbindung mit Geradenstücken ergibt aber nur bei min. zwei Datenpunkten Sinn.

Du brauchst also jeweils Vektoren Z1, Z2, Z3 mit allen Datenpunkten auf einmal. Am einfachsten geht das über Vektorisierung:


Code:
f       =   2.45e9;                  % Frequenz
c0      =   299.792458e6;            % Lichtgeschwindigkeit
t       =   35e-6;                   % Leitungsschichtdicke
Z0      =   119.9169832*pi;          % Free Space Impedance
lambda0 =   c0/f;                    % Lambda 0

h = 0.5;
W = 1e-3;

Wsmin = 0.0015*lambda0
Wsmax = 0.075*lambda0

Er1 = 2.22;
Er2 = 3.2;
Er3 = 3.8;

figure(1)
W = Wsmin : 0.0001 : Wsmax ;
Z1 = (lambda0*W/h)./(sqrt(Er1-2.06+0.85*(W/h).^2)) ;


Z2 = lambda0*(W/h)./(sqrt(Er2-2.06+0.85*(W/h).^2)) ;


Z3 = lambda0*(W/h)./(sqrt(Er3-2.06+0.85*(W/h).^2)) ;

hold on
plot(W, Z1,'r-', W, Z2,'b-', W, Z3,'g-')
%axis([-2e-3,10e-3,-1,250])
legend('Z0','Z1','Z2','Location','North')
title('Characteristic Impedance')
xlabel('Weite')
ylabel('Z0')
%end


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2016, 13:35     Titel:
  Antworten mit Zitat      
Vielen Dank für deine schnelle Antwort. Vektorisierung erfolgt in Matlab durch den Punkt Befehl?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

an sich erst mal dadurch, dass Vektoren an die Befehle übergeben werden.

* , / und ^ sind aber Matrixoperationen, z.B. Matrixmultiplikation. Wenn man möchte, dass die Operation elementweise durchgeführt wird, muss man den Punkt voransetzen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2016, 17:49     Titel:
  Antworten mit Zitat      
Also bei der Gleichung will er nicht. Habe ich da Punkte vergessen?

Code:


Z1 = 60 + 3.69 .* sin(((Er1 - 2.22).*pi)./(2.36)) + 133.5*log(10.*Er1).*sqrt(W./lambda0) ...
    + 2.81.*(1-0.011.*Er1.*(4.48+log(Er1))).*(W./h).*log((100.*h)./lambda0)+131.1.*(1.028-log(Er1)).*sqrt(h./lambda0)...
    + 12.48.*(1+0.18.*log(Er1)) .* (W./h)./(sqrt(Er1-2.06+0.85.*(W./h).^2))

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

was heißt denn "er will nicht"?

Ich kann weder bei der Ausführung der Zeile noch beim Plot ein Problem erkennen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2016, 17:50     Titel:
  Antworten mit Zitat      
Naja er will nich bedeutet egal wie ich es schreibe, kommt ein leerer Plot dabei raus. Nur bei `r-o`bekomme ich Punkte bei `r-`bleibt das Koordinaten System einfach leer.

Hier zum Beispiel ein neuer Code der auch nicht die Punkte verbindet oder nicht einmal Zeichnet.


Code:


%% Variablen

W  = 0.05

for Ls = 0.001 : 0.001 : 0.1

npJ = (Ls)./(2.*W)

hold on
plot(Ls, npJ,'r-')  
           
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wieder dasselbe Problem, wieder dieselbe Lösung.

Code:
hold on
Ls = 0.001 : 0.001 : 0.1;
npJ = (Ls)./(2.*W)
plot(Ls, npJ,'r-')


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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 13.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2016, 19:57     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Geduld mit mir. Dein Code funktioniert perfekt! Jedoch funktioniert dein Code nur ohne for Schleife. In diesem Fall ist diese auch nicht nötig. Meine Frage ist aber wie kann man eine For Schleife verwenden und es wird eine Linie geplottet. Das habe ich bis jetzt nicht geschafft.

Viele Grüße und nochmals größten Dank

[EDITED, Jan, Bitte kein Top-Quoting - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Meine Frage ist aber wie kann man eine For Schleife verwenden und es wird eine Linie geplottet.

Sag das doch gleich :)
Es müssen alle Werte in einem Vektor gesammelt werden.

Code:
allLs = 0.001 : 0.001 : 0.1;
npJ = zeros(size(allLs));
for I = 1:numel(allLs)
npJ(I) = (allLs(I))./(2.*W);
end
plot(Ls, npJ,'r-')


Grüße,
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.