Matlab 用于不同颜色的循环

Matlab 用于不同颜色的循环,matlab,colors,plot,Matlab,Colors,Plot,我试图在for循环中以不同的颜色绘制3条不同的线。但对于所有行,仅显示循环中的最后一种颜色 hold on for N = [20, 200, 2000] f=@(t,u)cos(3*t)-sin(5*t)*u; a=0; b=4; ua=2; h=(b-a)/N; t=a+(0:N)*h; U=zeros(size(t)); U(1)=ua; for n=1:N U(n+1)=U(n)+h*f(t(n),U(n)); e

我试图在
for
循环中以不同的颜色绘制3条不同的线。但对于所有行,仅显示循环中的最后一种颜色

hold on

for N = [20, 200, 2000]
    f=@(t,u)cos(3*t)-sin(5*t)*u;
    a=0; b=4; ua=2;
    h=(b-a)/N;
    t=a+(0:N)*h; U=zeros(size(t));
    U(1)=ua;
    for n=1:N
        U(n+1)=U(n)+h*f(t(n),U(n));
    end
       for color=['r' 'g' 'b']
        plot(t,U,'color',color)
       end
end

问题是,您要在每条曲线的顶部绘制三次,以便只显示最后一种颜色。解决此问题的一个简单方法是使用一个单独的循环变量和两个新向量,而不是使用您尝试的方法。我还将一些常见定义移到了
for
循环之外:

hold on
NN = [20 200 2000];
colors=['rgb'];
f=@(t,u)cos(3*t)-sin(5*t)*u;
a=0; b=4; ua=2;
for jj = 1:3
    N = NN(jj);
    h=(b-a)/N;
    t=a+(0:N)*h;
    U=zeros(size(t));
    U(1)=ua;
    for n=1:N
        U(n+1)=U(n)+h*f(t(n),U(n));
    end
    plot(t,U,'color',colors(jj))
end

放下颜色的
循环,将
hold on
更改为
hold all