I need help with using the If-Else loop containing scalar and nonscalar
Show older comments
Create a plot of iD as a function of vDS from 0 ≤ vDS ≤ 8 V, for three values of vGS =2, 3, and 4 V.
Constants: Kn=0.2 mA/V2; VTN =1.2 V; λ=0.01 V-1.
Here is my work I have so far:
Vds = 0:0.1:8;
Vgs = 2:1:4;
kn = 0.2;
Vtn = 1.2;
lambda = 0.01;
Vds_Sat = Vgs - Vtn;
if (Vds <= Vds_Sat)
ID = Kn*(2*(Vgs-Vtn)*Vds - (Vds^2));
else (Vds >= Vds_Sat)
ID = Kn*((Vgs - Vtn)^2*(1 + lambda * Vds));
end
plot(Vds.,ID)
It is telling me I have an error on line 7 and that my matrix dimension must agree, could you please help me with this?
1 Comment
Walter Roberson
on 22 Jan 2013
There is no such thing as an "If loop". There is an "if statement". Loops execute the body multiple times; statements execute the body (or not) exactly one time.
Answers (1)
Matt J
on 21 Jan 2013
This operation
Vds <= Vds_Sat
does not make sense since the left and right hand side are vectors of different sizes.
9 Comments
Steven
on 21 Jan 2013
Loop over Vgs and operate on one value at a time
for Vgs=[2,3,4]
Vds_Sat = Vgs - Vtn;
etc...
end
Matt J
on 21 Jan 2013
Also, use logical indexing instead of IF...ELSE statements. Also, make sure you know the differences between Vds^2 and Vds.^2
idx = (Vds <= Vds_Sat) ;
ID(idx) = Kn.*(2.*(Vgs-Vtn).*Vds(idx) - (Vds(idx).^2));
Steven
on 21 Jan 2013
An if-statement when (Vds <= Vds_Sat) is a vector will not do what you want here. Some kind of indexing and/or a for-loop will be necessary. If you want to stay as close as possible to your original code, you could double loop over Vds and Vgs
VDS=0:.1:8;
for Vgs=[2,3,4]
for ii=1:length(VDS)
V_ds=VDS(ii);
Vds_Sat = Vgs - Vtn;
if (Vds <= Vds_Sat)
ID(ii) = Kn*(2*(Vgs-Vtn)*Vds - (Vds^2));
else (Vds >= Vds_Sat)
ID(ii) = Kn*((Vgs - Vtn)^2*(1 + lambda * Vds));
end
end
plot(....)
end
Steven
on 21 Jan 2013
Steven
on 21 Jan 2013
Steven
on 21 Jan 2013
Use the HOLD command. Or, plot to different figure windows
figure; plot(....)
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!