how to integrate inside 'for' loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Nabhdeep Bansal
le 24 Août 2014
Commenté : Matz Johansson Bergström
le 24 Août 2014
I am new to matlab. All i wanted was to integrate f(t)*cos(pi*n*t) over t through quadgk inside a loop where n varies from 1 to 10. But I guess the problem is that quadgk needs a function where only t is a variable and not n. how to do it???
t=linspace(0,12,1000);
T=2;
Y=g(t)';
rep=(t(end)-t([1]))/T;
f=0;
N=5;
hold on;
h=zeros(N,1);
clr=lines(N);
for n=1:2:N;
line(t,Y,'linewidth',5)
grid on;hold on;
A=(1/T)*quadgk(@g,0,T);
P=Y.*(cos(n*pi*t))';
Q=Y.*(sin(n*pi*t))';
Ax=(2/T)*quadgk(@s,0,T);
Bx=(2/T)*trapz(t,Q)/rep;
f=f+(Ax*cos(pi*n*t)+Bx*sin(pi*n*t));
final=A+f;
h(n)=plot(t,final,'linewidth',2,'Color',clr(n,:));
end
hold off;
legend(h, num2str((1:N)','harmonic-%d'))
function f=g(x)
z=2*floor(x/2);
x1=x-z;
y1=(1).*(0<=x1 & x1<=0.8);
y2=(-1).*(0.8<x1 & x1<2);
f=y1+y2;
0 commentaires
Réponse acceptée
Matz Johansson Bergström
le 24 Août 2014
Modifié(e) : Matz Johansson Bergström
le 24 Août 2014
To solve this problem you can use a anonymous function handle to a function with x and n as arguments.
f = @(x) myfun(x, n);
So you define your function with 'function myfun(x,n)' and pass the handle f to quadgk like
quadgk(f,0,T)
Please note that I don't use @ here.
6 commentaires
Matz Johansson Bergström
le 24 Août 2014
You want to calculate the quadrature of f(t)*cos(pi*n*t), how do you define f?
Plus de réponses (0)
Voir également
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!