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

Plotting of Vector Data

 

Chrophi
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 10.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 14:14     Titel: Plotting of Vector Data
  Antworten mit Zitat      
Hi! Ich habe folgendes Problem, erstmal die Aufgabenstellung:

Write a MATLAB script "plotFktn.m" which plots the vector function:

Code:
Vx=[(x-d)/(((x-d)^2)+y(y^2)+1)^(3/2)]-[(x+d)/(((x+d)^2)+(y^2)+1)^(3/2)];

(da kommt dann noch ne 2. namens Vy aber is jetzt erstmal unrelevant)


using the function quiver(), and saves the plot to an image file named 'result.png'. Value of the parameter d=2.

The x and y coordinates should be in the interval [-3,3], and they should form a rectangular grid of the length 20 in x and y directions. The color of the arrows showing the vector field should be red. Mark the x axis with 'x' and y axis with 'y'.

Upload a MATLAB script named "plotFktn.m" which creates this plot and saves the image to the file "result.png" .


ich hab jetzt mal so angefangen:
Code:
d=2;
x=[-3:3];
y=[-3:3]
Vx=[(x-d)/(((x-d)^2)+y(y^2)+1)^(3/2)]-[(x+d)/(((x+d)^2)+(y^2)+1)^(3/2)];
Vy=....;
 


Hier tritt auch schon das erste Problem auf: er sagt mir folgenden Error:

??? Error using ==> mpower
Matrix must be square.

Woran liegt das? Steig ich nicht wirklich durch, vermute mal wegen x,y

weiter wäre ich dann so vorgegangen:
Code:
hold on
quiver(x,Vx,'r',y,Vy,'r',20);
xlabel('x');
ylabel('y');
axis([-3 3 -3- 3]);
print('-dbitmap'),('result.png');
 



So also zusammgefasst, wieso erscheint der Error? und stimmt der 2. teil meines Codes oder lieg ich da komplett falsch?

Vielen Dank für Eure Hilfe =)

PS: Bin Forumsneuling, sollte das hier im falschen Forumsteil stehen oder die Frage schonmal in ähnlicher Art und Weise aufgetaucht sein, bitte ich um Entschuldigung =) )
_________________

Software is like Sex, its best if its for free!

Zuletzt bearbeitet von Chrophi am 30.11.2011, 15:05, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.11.2011, 14:45     Titel:
  Antworten mit Zitat      
nunja wenn man sich mal die doc zu mpower anguckt oder auch die fehlermeldung bekommt man mit das mpower für matritzen ist. die kann man nur mit sich selbst multiplizieren wenn sie quadratisch sind. steht auch in der doc. und x ist nicht quadratisch. du prauchst power.
also
Code:
das ist dann für jedes element
Private Nachricht senden Benutzer-Profile anzeigen
 
Chrophi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 10.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 14:52     Titel:
  Antworten mit Zitat      
habs jetzt so:

Code:
Vx=[(x-d)/(((x-d).^2)+y(y.^2)+1).^(3/2)]-[(x+d)/(((x+d).^2)+(y.^2)+1).^(3/2)];



aber jetzt kommt folgender error:

??? Subscript indices must either be real positive integers or logicals.


Ne idee? Danke für die schnelle Antwort!
_________________

Software is like Sex, its best if its for free!
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: 30.11.2011, 15:09     Titel:
  Antworten mit Zitat      
Hallo,

Multiplikation muss explizit angegeben werden, wird ansonsten als Indizierung verstanden, also
Code:
statt
Code:


Zudem wirst du auch komponentenweise teilen müssen, d.h. statt / brauchsts du ./

Grüße,
Harald

P.S.: Software is like sex. If you pay for it, you get a professional product.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 30.11.2011, 15:10     Titel:
  Antworten mit Zitat      
das selbe was für power gilt gilt auch für die anderen sachen wie matrix divison und multiplikation. es es gewollt das du matrix multiplikation benutzt? sonst musst du auch .* und ./ benutzen
Private Nachricht senden Benutzer-Profile anzeigen
 
Chrophi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 10.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.11.2011, 16:14     Titel:
  Antworten mit Zitat      
Okay also jetzt hab ichs so:

Code:
Vx=[(x-d)./(((x-d).^2)+(y.^2)+1).^(3/2)]-[(x+d)./(((x+d).^2)+(y.^2)+1).^(3/2)];

Vy= [y./(((x-d).^2)+)y.^2)+1).^(2/3)]-[y./(((x+d).^2)+(y.^2)+1).^(3/2)];


es erscheint kein error mehr, stimmt also jetzt vom syntax, die Frage ist aber, mathematisch ausgedrückt auch?

Die grundformel ist im Dateianhang.


ich bin jetzt folgendermaßen weiter vorgegangen:

Code:
hold on
quiver(x,Vx,y,Vx);
xlabel('x');
ylabel('y');
axis([-3 3 -3 3]);


allerdings sieht das Ergebnis nicht vielversprechend aus, weiterhin sollen die Vektorpfeile ja rot sein und x und y achse im intervall sollen ein rechteckiges gitter der länge 20 bilden, kann man dass so schreiben?

Code:
quiver(x,Vx,'r',y,Vx,'r',20);


Vielen dank für die bisherige Hilfe =)

image.php.png
 Beschreibung:

Download
 Dateiname:  image.php.png
 Dateigröße:  3 KB
 Heruntergeladen:  486 mal

_________________

Software is like Sex, its best if its for free!
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 09.12.2011, 18:30     Titel:
  Antworten mit Zitat      
Hallo,

schau Dir mal folgendes Beispiel an:
Code:

x=linspace(-3,3,20);
y=linspace(-3,3,20);
d=1;
Vx=(x-d)./(((x-d).^2)+(y.^2)+1).^(3/2)-(x+d)./(((x+d).^2)+(y.^2)+1).^(3/2);
Vy= y./((x-d).^2+y.^2+1).^(2/3)-y./(((x+d).^2)+(y.^2)+1).^(3/2);

quiver(x,Vx,y,Vx,'r');
xlabel('x');
ylabel('y');


Eckige Klammern definieren Vektoren bzw. Matrizen (Stichwort "Concatenating"). Für d musst Du natürlich einen Wert angeben. "linspace(-3,3,20)" erzeugt einen Vektor mit 20 äquidistanten Werten im Bereich -3 bis +3.

Keine Garantie, dass in Vx und Vy alle Klammern richtig gesetzt sind Smile

MfG
Johannes
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.