• Support PF! Buy your school textbooks, materials and every day products via PF Here!

Engineering Use a MATLAB Workspace to get the unknown values in an AC circuit

242
11
Homework Statement
The question is attached below.
Homework Equations
-
The plot of part b is attached below.
I got a warning on part a , I don't know where is my mistake .
Please check my work .
Part A
Matlab:
clc;
clear all;
%parta
f=800;
t=0:10e-6:0.005;
xc=10^(-6);
xl=40e-3;
for i=1:(0.005)/(10e-6)
    w=2*f*pi;
    zeq=xl*j*w+50;
    is(i)=2*(1600*t(i)*pi);
    c=1/(xc*j*w);
    i1(i)=is(i)*c/(c+zeq); %apply CDR
    vo(i)=i1(i)*zeq;
end
figure (1)
subplot(2,1,1) , plot (t,vo)
subplot (2,1,2) , plot (t,is)
%partb
f=10:10:1000;
xl=40e-3;
xc=1e-6;
r=50;
for i=1:100 %(1000-10)/10+1=100
    w(i)=2*f(i)*pi;
    zeq(i)=xl*j*w(i)+r;
    c(i)=1/(xc*j*w(i));
    l(i)=xl*w(i)*j;
    zeq(i)=r+l(i);
    zt(i)=zeq(i)+c(i);
    is(i)=2*(cosd(0)+sind(0)*j); %convert to recantgular form
    vo(i)=(is(i)*c(i)/zt(i))*zeq(i); %Apply CDR to find the current and multiply it by Zeq to get the voltage
end
logscale1=20*log(abs(vo));
logscale2=20*(log(rad2deg(angle(vo))));
subplot(2,1,1) , plot(f,logscale1)
subplot(2,1,2) , plot(f,logscale2)
 

Attachments

BvU

Science Advisor
Homework Helper
12,340
2,745
I don't have Matlab, but Octave gives an error in line 11: the index ##i## in array ##is## is invalid because ##i## is not an integer...
 

RPinPA

Science Advisor
Homework Helper
510
286
I don't have Matlab, but Octave gives an error in line 11: the index ##i## in array ##is## is invalid because ##i## is not an integer...
That sounds likely just looking at the code. Actually providing the text of the message would be useful, we can't tell much from "I got a warning somewhere in my code".

I know that 0.005/10e-6 looks like it should be an integer, but floating point arithmetic in computers is not exact. Many numbers that are terminating decimals in base 10 are repeating decimals in base 2.

I would try changing the limits of the FOR loop to "for i=1:round(0.005/10e-6)"
 
242
11
That sounds likely just looking at the code. Actually providing the text of the message would be useful, we can't tell much from "I got a warning somewhere in my code".

I know that 0.005/10e-6 looks like it should be an integer, but floating point arithmetic in computers is not exact. Many numbers that are terminating decimals in base 10 are repeating decimals in base 2.

I would try changing the limits of the FOR loop to "for i=1:round(0.005/10e-6)"
I resolve it again .
Plots are attached below.
Matlab:
clc;
clear all;
%parta
f=800;
xl=40e-3;
xc=1e-6;
r=50;
t=0:1e-6:5e-3
is=2*cos(1600*pi*t);
w=2*pi*f;
l=xl*j*w;
c=1/(xc*j*w);
z=l+r;
zeq=(z*c)/(c+z);
vo=is*zeq;  %v=total current*total Z
figure (1)
subplot(2,1,1) , plot (t,vo)
subplot(2,1,2) , plot (t,is)
%part b
f=10:10:1000;
xl=40e-3;
xc=1e-6;
r=50;
for i=1:100 %(1000-10)/10+1=100
    w=2*pi*f(i);
    c=1/(xc*j*w);
    l=xl*w*j;
    z=l+r;
    zeq=(z*c)/(z+c);
    is=2*(cosd(0)+sind(0)*j); %convert to rectangular form
    vo(i)=is*zeq;
    vom(i)=abs(vo(i));
    voa=rad2deg(angle(vo(i)));
end
figure (2)
    semilogx(f,vom)
figure (3)
    semilogx(f,voa)
 

Attachments

Last edited:

Want to reply to this thread?

"Use a MATLAB Workspace to get the unknown values in an AC circuit" You must log in or register to reply here.

Related Threads for: Use a MATLAB Workspace to get the unknown values in an AC circuit

Replies
0
Views
2K
  • Posted
Replies
9
Views
1K
Replies
2
Views
2K
Replies
0
Views
7K
Replies
5
Views
640
Replies
4
Views
2K
Replies
0
Views
1K

Physics Forums Values

We Value Quality
• Topics based on mainstream science
• Proper English grammar and spelling
We Value Civility
• Positive and compassionate attitudes
• Patience while debating
We Value Productivity
• Disciplined to remain on-topic
• Recognition of own weaknesses
• Solo and co-op problem solving
Top