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

Funktion Plotten und Marker setzen

 

sawyer_ma
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2016, 11:38     Titel: Funktion Plotten und Marker setzen
  Antworten mit Zitat      
Hallo alle zusammen,

ich habe folgenden Code. Ich habe folgendes Problem das ich zwei Parameter Variieren möchte. N sollte die Werte 1,2,4,6,8,10 abfahren und dabei immer bei jedem Wert von N mit d durchlaufen werden.

Aus dem generierten Plot möchte ich dann genau bei AF = 0.5 mein d bestimmen. Wie kann man das aus einem Plot machen damit dieser auch in der Grafik mit angezeigt wird?

Code:
clc;
clear all;


% %% Variabeln
fc               =   2.45e9;
Er              =   3;
c0              =   physconst('lightspeed');
lambda0     =   c0./fc;
lambda       =   lambda0./sqrt(Er);
theta          =   15.5

%% Gruppenfaktor

figure(1)
hold on

N = 2
d   = -100e-3:1e-3:100e-3;


AF = abs(sin(N.*pi.*((d./lambda).*cos(theta)))./(N.*sin(pi.*((d./lambda).*cos(theta)))));


plot(d, AF,'r-')


Desweiteren habe ich das Problem das wenn ich über Theta den Plot variieren möchte das meine Lieblings Fehlermeldung: "Matrix Dimension must agree" kommt.

Code:
figure(1)
hold on

N = 2
theta   = 0:1:180


AF = abs(sin(N.*pi.*((d./lambda).*cos(theta)))./(N.*sin(pi.*((d./lambda).*cos(theta)))));


plot(theta, AF,'r-')
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.07.2016, 17:44     Titel:
  Antworten mit Zitat      
Hallo,

1. z.B. Interpolation mit interp1 , und dann das Ergebnis mit plot hinzufügen.

2. theta hat Länge 181, d hat Länge 201. Da ist nunmal eine komponentenweise Multiplikation möglich.
Was möchtest du da denn eigentlich? Einen separaten Plot für jedes theta, also 181 Kurven? Das würde aber ziemlich voll werden...

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2016, 18:28     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Hilfe. Ich habe es bis jetzt mal so gelöst aber werde deinen Vorschlag gleich mal versuchen umzusetzen.

Eine weitere Frage die sich mir gestellt hat ist, wie kann ich den Code in ein 3d Polar Plot darstellen? Irgendwie hat Matlab in der Hilfe da keine Beispiele.

Und eine Weitere Frage, kann man den Code so schreiben wie ich es gemacht habe oder ist es sehr unschön geschrieben. Da ich noch Neuling mit Matlab bin, bin ich immer Interessiert wie man es schreiben könnte wenn man ahnung davon hat Very Happy


Code:

fc           =   2.45e9;
Er           =   3;
c0           =   physconst('lightspeed');
lambda0      =   c0./fc;
lambda       =   lambda0./sqrt(Er)
theta1       =   (90/180).*pi


figure(3)
hold on
N1 = 2
N2 = 6
N3 = 10;

x = 0.02;
phi   = 0:0.01:180

Ce = abs(cos(pi./2 .*cos(theta1))./sin(theta1));

Cg1 =Ce.*abs(sin(N1.*pi.*((x./lambda).*cos(phi./180.*pi)))./(N1.*sin(pi.*...
    ((x./lambda).*cos(phi./180.*pi)))));
Cg2 = Ce.*abs(sin(N2.*pi.*((x./lambda).*cos(phi./180.*pi)))./(N2.*sin(pi.*...
    ((x./lambda).*cos(phi./180.*pi)))));
Cg3 = Ce.*abs(sin(N3.*pi.*((x./lambda).*cos(phi./180.*pi)))./(N3.*sin(pi.*...
    ((x./lambda).*cos(phi./180.*pi)))));

plot(phi, Cg1,'r-', phi, Cg2,'g-', phi, Cg3,'m-')



Grüße und allen noch ein schönes Wochenende
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

kurze Google-Suche liefert dies:
https://www.mathworks.com/matlabcen.....hange/13200-3d-polar-plot

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.07.2016, 22:25     Titel:
  Antworten mit Zitat      
Ja das hatte ich auch gefunden. Jedoch bin ich nicht ganz schlau daraus geworden. Ich muss ja irgendwie meinen bisherigen Plot umschreiben und das ist mir nicht gelungen.

Code:


[t,r] = meshgrid(linspace(0,2*pi,361),linspace(-4,4,101));
     [x,y] = pol2cart(t,r);
     P = peaks(x,y); % peaks function on a polar grid

                    % draw 3d polar plot
     figure('Color','white','NumberTitle','off','Name','PolarPlot3d v4.3');
     polarplot3d(P,'PlotType','surfn','PolarGrid',{4 24},'TickSpacing',8,...
                   'AngularRange',[30 270]*pi/180,'RadialRange',[.8 4],...
                   'RadLabels',3,'RadLabelLocation',{180 'max'},'RadLabelColor','red');

                    % set plot attributes
     set(gca,'DataAspectRatio',[1 1 10],'View',[-12,38],...
             'Xlim',[-4.5 4.5],'Xtick',[-4 -2 0 2 4],...
             'Ylim',[-4.5 4.5],'Ytick',[-4 -2 0 2 4]);
     title('polarplot3d example');
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.07.2016, 23:57     Titel:
  Antworten mit Zitat      
Hallo,

und welche Probleme treten nun auf?
Laufen lassen kann ich den Code so nicht, das müsstest du also schon dazu schreiben.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2016, 01:30     Titel:
  Antworten mit Zitat      
Also eigentlich sollte ich ein Richtdiagramm einer Antenne heraus kommen wo die Strahlkeule gut zu sehen ist. Jedoch bekomme ich diese Fehlermeldung.

Undefined function or variable 'polarplot3d'.

Error in HF8_PolarPlot (line 33)
polarplot3d(P,'PlotType','surfn','PolarGrid',{4 24},'TickSpacing',8,...

Und ich denke das ist mein großes Problem, das ich nicht verstehe wie ich meine Funktion in den Code mit einbringe??

bei diesem Code:

Code:

clc;
clear all;


%% Variabeln
fc           =   2.45e9;
Er           =   3;
c0           =   physconst('lightspeed');
lambda0      =   c0./fc;
lambda       =   lambda0./sqrt(Er);
theta       =   (1/180).*pi;
N1           =   10;
x            =   0.02;
phi          =   0:0.01:180;

%% 3D Plot

figure(3)
hold on

[t,r] = meshgrid(linspace(0,2*pi,361),linspace(-4,4,101));
[x,y] = pol2cart(theta,phi);
P = peaks(x,y);                                                             % peaks function on a polar grid

Ce = abs(cos(pi./2 .*cos(theta))./sin(theta));

Cg1 =Ce.*abs(sin(N1.*pi.*((x./lambda).*cos(phi./180.*pi)))./(N1.*sin(pi.*...
    ((x./lambda).*cos(phi./180.*pi)))));


% draw 3d polar plot
figure('Color','white','NumberTitle','off','Name','PolarPlot3d v4.3');
polarplot3d(P,'PlotType','surfn','PolarGrid',{4 24},'TickSpacing',8,...
'AngularRange',[30 270]*pi/180,'RadialRange',[.8 4],...
'RadLabels',3,'RadLabelLocation',{180 'max'},'RadLabelColor','red');

% set plot attributes
set(gca,'DataAspectRatio',[1 1 10],'View',[-12,38],...
'Xlim',[-4.5 4.5],'Xtick',[-4 -2 0 2 4],...
'Ylim',[-4.5 4.5],'Ytick',[-4 -2 0 2 4]);
title('polarplot3d example');
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.452
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.07.2016, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

du musst die Funktion von File Exchange herunterladen und in das momentane Verzeichnis oder ein Verzeichnis auf dem Suchpfad ablegen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 75
Anmeldedatum: 14.03.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2016, 12:17     Titel:
  Antworten mit Zitat      
Super das hat schon mal geklappt. Jetzt gibt es auch keine Fehlermeldung mehr. Jedoch kommt nicht der erwartete Plot heraus. Gedacht war das wie im Anhang zu sehende Bild. Was läuft da falsch? In einem Normalen Plot (2d) funktioniert es ganz gut wie in Bild 2 zu erkennen ist.

Code:

clc;
clear all;


%% Variabeln
fc           =   2.45e9;
Er           =   3;
c0           =   physconst('lightspeed');
lambda0      =   c0./fc;
lambda       =   lambda0./sqrt(Er);
theta       =   (1/180).*pi;
N1           =   10;
x            =   0.02;
phi          =   0:0.01:180;

%% 3D Plot

hold on

Ce = abs(cos(pi./2 .*cos(theta))./sin(theta));

Cg1 =Ce.*abs(sin(N1.*pi.*((x./lambda).*cos(phi./180.*pi)))./(N1.*sin(pi.*...
    ((x./lambda).*cos(phi./180.*pi)))));

[Cg1,phi] = meshgrid(linspace(0,2*pi,361),linspace(-4,4,101));
[x,y] = pol2cart(Cg1,phi);
P = peaks(x,y);                                                             % peaks function on a polar grid


% draw 3d polar plot
figure('Color','white','NumberTitle','off','Name','PolarPlot3d v4.3');
polarplot3d(P,'PlotType','surfn','PolarGrid',{4 24},'TickSpacing',8,...
'AngularRange',[30 270]*pi/180,'RadialRange',[.8 4],...
'RadLabels',3,'RadLabelLocation',{180 'max'},'RadLabelColor','red');

% set plot attributes
set(gca,'DataAspectRatio',[1 1 10],'View',[-12,38],...
'Xlim',[-4.5 4.5],'Xtick',[-4 -2 0 2 4],...
'Ylim',[-4.5 4.5],'Ytick',[-4 -2 0 2 4]);
title('Polarplot');


Bildschirmfoto 2016-07-31 um 12.16.27.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2016-07-31 um 12.16.27.png
 Dateigröße:  113.45 KB
 Heruntergeladen:  343 mal
Bildschirmfoto 2016-07-31 um 12.11.50.png
 Beschreibung:

Download
 Dateiname:  Bildschirmfoto 2016-07-31 um 12.11.50.png
 Dateigröße:  298.05 KB
 Heruntergeladen:  336 mal
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.