I need help with using the If-Else loop containing scalar and nonscalar
Mostrar comentarios más antiguos
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 comentario
Walter Roberson
el 22 de En. de 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.
Respuestas (1)
Matt J
el 21 de En. de 2013
This operation
Vds <= Vds_Sat
does not make sense since the left and right hand side are vectors of different sizes.
9 comentarios
Steven
el 21 de En. de 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
el 21 de En. de 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
el 21 de En. de 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
el 21 de En. de 2013
Steven
el 21 de En. de 2013
Steven
el 21 de En. de 2013
Use the HOLD command. Or, plot to different figure windows
figure; plot(....)
Categorías
Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!