how to integrate inside 'for' loop
Show older comments
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;
Accepted Answer
More Answers (0)
Categories
Find more on Numerical Integration and Differentiation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!