how to integrate inside 'for' loop
    12 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
Catégories
				En savoir plus sur Numerical Integration and Differentiation dans Help Center et File Exchange
			
	Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

