Everytime I run code the color of lines on my graph changes
11 次查看(过去 30 天)
显示 更早的评论
load ENGR131_lab4_Data.mat
function h = CalcPosition(t,DC,w)
wn=1.8
o=DC.*wn;
h=1-exp(-o.*t).*cos(w.*t);
end
function x = five(t,N,V,h,w)
z=evalin('base','DC')
for N=1:2
switch N
case 1
plot(t,h)
hold on
case 2
plot(t,h);
hold on
case 3
LineColor='k-';
plot(t,h,':');
hold on
case 4
LineColor= 'm-';
plot(t,h,'-.');
hold on
end
end
end
for V=1
subplot(2,3,V)
t=linspace(0,20,100)
for N=1:2
figure(1)
h=CalcPosition(t,DC(1,N),w(1,V))
five(t,N,V,h,w)
end
end
0 个评论
采纳的回答
Rik
2024-10-2
编辑:Rik
2024-10-2
That makes sense, since you don't actually set the LineColor property when calling plot (instead you just have a variable with that name).
This means that every time you call this function, the same figure is being reused and a new line is plotted overlapping the existing lines, making it look as if the line colors are changing.
The solution is to do what you intended to do:
LineStyle='-.'
LineColor='m';
plot(t,h,LineStyle,'LineColor',LineColor)
You should also consider using explicit handles: create a new figure (or wipe the old one with clf) and a new axes, use hold on that axes object, plot, and release the hold.
And your use of evalin signals that you should rethink how you handle input arguments.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Specifying Target for Graphics Output 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!