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

Integration mit Parametersatz

 

FJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 08:04     Titel: Integration mit Parametersatz
  Antworten mit Zitat      
Hallo, ich bin noch neu hier im Forum und auch Anfänger mit Matlab. Der grundlegende Umgang und einfache Operationen sind mir allerdings bekannt.

Mein Problem ist, dass ich für ein bestimmten Parametersatz Integrale berechnen will.
also z.b. das integral e^ax mit a von 0 bis 100 im intervall von 0<x<50. e^1x im intervall, dann e^2x etc... Jetz möchte ich das mir die 100 Integrale berechnet werden und ich die Ergebnisse als Zeilenvektor erhalte, sodass ich das Integral in Abhängigkeit vom Parameter a darstellen kann. Ich habe schon Ansatzweise versucht mit Schleifen zu arbeiten, aber ich krieg es nicht hin, dass er nicht einfach ein Integral immerwieder überschreibt. Wie kann ich vorgehen?


Harald
Forum-Meister

Forum-Meister


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

z.B. so:

Code:
a = 0:20;
integral = zeros(size(a));
for I = 1:length(a)
    fctn = @(x) exp(a(I) * x);
    integral(I) = quad(fctn, 0, 20);
end
semilogy(a, integral)

(nur dass da nichts tolles rauskommt...)

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 12:54     Titel:
  Antworten mit Zitat      
ja... das war nur ein Beispiel, im Endeffekt will ich eine Fouriertransformation einer Zeitfunktion in eine Frequenzfunktion machen, die Übergabeparameter sollen die Funktionswerte der Zeitfunktion, die Zeit und eben ein bestimmter Frequenzbereich sein. jetz müssen die einzelnen Integrale für alle Frequenzen berechnet werden, dann sollte eine schöne Hüllkurve herauskommen, wenn ich die Integrale in Abhängigkeit der Frequenz darstellen.
 
FJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 14:16     Titel:
  Antworten mit Zitat      
warum muss ich eigentlich dieses @ dahinschreiben? kann ich die funktion nich auch so aufrufen? naja ich hab jetz also das integral folgendermaßen erstellt:

Code:

f=linspace(-30,30,801);
Uf = zeros(size(f));
for I = 1:length(f)
    fctn = @(t) ut*exp(1i*2*pi*f(I)*t);
    Uf(I) = trapz(f,fctn);
end
 


??? Undefined function or method 'max' for input arguments of type
'function_handle'.

Error in ==> trapz at 43
perm = [dim:max(ndims(y),dim) 1:dim-1];

Error in ==> four at 5
Uf(I) = trapz(f,fctn);

hmm irgendwie haut etwas mit der trapezintegration net hin, wir sollen die aber benutzen und was ist bitte die method max? so eine hab ich doch garnicht benutzt?
 
Harald
Forum-Meister

Forum-Meister


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

so gehts (ut war nicht definiert, hab ich mal auf 2 gesetzt)

Code:
f=linspace(-30,30,801);
Uf = zeros(size(f));
ut = 2;
for I = 1:length(f)
    fctn = @(t) ut*exp(1i*2*pi*f(I)*t);
    Uf(I) = trapz(f,fctn(f));
end


Warum das @ ? - Bitte in der Doku zu Function Handle nachlesen.
Warum Fehlermeldung zu max? - Weil aufgrund der falsch übergebenen Argumente in trapz ein Fehler auftritt.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 15:07     Titel:
  Antworten mit Zitat      
Hallo Harald, danke für deine Geduld mit mir. Ja wenn ich es so eingebe wie du, dann haut das integral hin, allerdings ist ut ja der Vektor, der die Funktionswerte meiner zu integrierenden Zeitfunktion enthält... nun können sich diese Funktionswerte doch eigentlich ändern?! Also Ziel ist es eine Funktion zu basteln, an die ich die Werte ut, t, f übergebe und dann eine zeitfunktion rausbekomme... so sollen diese 3 parameter alles vektoren sein, mit bestimmten werten.
 
Harald
Forum-Meister

Forum-Meister


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

kleinen Moment, damit ich mitkomme:
Angefangen hatten wir mit einer Funktion mit Parameter a, die über x integriert wurde. Heraus kam also ein Integral, in Abh. von a.

Jetzt haben wir t, ut, und f. Über was soll nun integiert werden?
Willst du dann eine Matrix haben, in der Werte in Abh. von den 2 anderen Parametern stehen, und die dann z.B. als Oberflächenplot betrachten?

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 15:38     Titel:
  Antworten mit Zitat      
nein, es geht darum ein fourier integral zu bestimmen. also U(F)= integral von minus unendlich bis plus unendlich von u(t)*exp(-i2*pi*ft)dt
so jetz soll ich eine zeifunktion erstellen, deren funktionswerte ich in das integral einsetzen kann, jenes hab ich geschafft. also die parametervektoren t und ut sind vorhanden, auch ein frequenzvektor hab ich. jetz integrier für f(0), dann für f(1) etc... diese integrale sollen dann in abhängigkeit der frequenz dargestellt werden. dieses klappt ja jetz schonmal für ein festes ut, allerdings nicht für eine reihe von ut.
 
Harald
Forum-Meister

Forum-Meister


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

meine Vermutung ist, dass F und ft in deiner "Gleichung" dasselbe sind? Dann würde man es so schreiben:

Code:
f=linspace(-30,30,801);
Uf = zeros(size(f));
for I = 1:length(f)
    Uf(I) = trapz(t, ut*exp(-2i*pi*f(I)));
end

... und kommt sogar bequem ohne das @ aus.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2009, 23:19     Titel:
  Antworten mit Zitat      
also die funktion, die bei deinem code rauskommt, sieht nicht so aus wie die, die es werden soll.
also
Code:
t=linspace(-400,400,801);
u0=2;
ut=u0*rectpuls(t/100);
plot(t,ut);

macht mir eine zeitfunktion
und mit
Code:

function[Uf,f]=FTnum(ut,t,f)
%f=linspace(-30,30,801); ( sollte übergeben sein)
Uf = zeros(size(f));
for I = 1:length(f)
    for m= 1:length(t)
        g(m) = ut(m)*exp(-1i*2*pi*f(I)*t(m));
    end
    Uf(I) = trapz(t,g);
end

plot(f,Uf)
axis([-30 30 -250 250 ])
 

kann nun durch eingabe eines
Code:
und den aufruf FTnum(ut,t,f) eine fouriertranformation durchführen

so und ich bekomme auch schon eine funktion, die ähnlichkeiten mit der si funktion aufweißt, die herrauskommen sollte. allerdings flacht mein Kurve zu den Seiten nicht ab, außerdem sollten die funktionswerte höchstens bis 2 gehen und nicht bis 200...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.11.2009, 23:41     Titel:
  Antworten mit Zitat      
Zitat:
also die funktion, die bei deinem code rauskommt, sieht nicht so aus wie die, die es werden soll.


Wenig erstaunlich. Dass ft bei dir f*t bedeutet, habe ich dann doch nicht geahnt. Und auf die entsprechende Frage bist du nicht eingegangen Wink

Zitat:
so und ich bekomme auch schon eine funktion, die ähnlichkeiten mit der si funktion aufweißt, die herrauskommen sollte. allerdings flacht mein Kurve zu den Seiten nicht ab, außerdem sollten die funktionswerte höchstens bis 2 gehen und nicht bis 200...


Ungenauigkeiten können durch zu große Integrationsschrittweite verursacht sein. Versuch doch mal dein Gitter (t) feiner zu machen.

Ansonsten: Aufgabenstellung überprüfen, Code überprüfen. Mehr kann ich so leider auch nicht sagen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2009, 08:39     Titel:
  Antworten mit Zitat      
ja, entschuldige, das hätte ich besser aufschreiben können. bin immer etwas ungeduldig beim formulieren von solchen texten ^^. vielleicht hat ja jemand anderes noch eine idee, wie ich zu meiner sinc funktion als fouriertransformierte komme, ansonsten probier ich es einfach so weiter, wenn ich die lösung habe, werde ich ansonsten wieder posten.
 
FJ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2009, 11:51     Titel:
  Antworten mit Zitat      
Hallo, vielen danke nochmal für die Hilfe!!
Ich hab den Fehler gefunden! Habe nicht beachtet, dass ich meine Periodendauer in Millisekunden angegeben hatte. Dummer Einheiten Fehler. Wer zur Hölle hat sich diese Einheitenvorsilben nur ausgedacht.
Jedenfalls bekomme ich jetz eine wunderschöne Si Funktion:
[/URL][/img]
 
kegelstumpf
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 14.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2009, 06:51     Titel:
  Antworten mit Zitat      
Hallo,

kannst du vielleicht noch deine finale Version deines Scripts posten?
Ich habe nämlich genau das gleiche Problem und ich komme auch nach langem rumprobieren nicht auf so einen schöne Si-Fktn wie du.
Wäre mir echt damit geholfen.

Danke
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.