我有下面的matlab代码,用于通过欧拉法近似微分方程:
% Eulermethod
a=0;
b=0.6;
Steps=6;
dt=(b-a)/Steps;
x=zeros(Steps+1,1);
x(1,1)=1;
y=zeros(Steps+1,1);
for i=1:Steps
x(i+1,1)=x(i,1)+dt*(x(i,1)*x(i,1)+1);
end
plot(x)
我希望能够在一个图中绘制几个不同步长的解图,并使x轴从0到0.6,而不是从1到100,000等。这可以做到吗?
发布于 2012-11-12 14:01:18
如果您使用hold on
命令,这将允许您在同一图形上实现多个绘图。类似地,如果您将数据分离为x
和y
向量,则可以通过将两个向量传递给plot
而不是只向一个向量来绘制它们之间的关系。例如
figure
hold on
for i=1:m
x = [];
y = [];
%% code to populate your vectors
plot(x,y)
end
现在,您应该可以在同一张图上同时看到所有的绘图。如果希望x
由0到0.6之间的n
等间距元素组成,可以使用linspace
命令:
x = linspace(0.0,0.6,n);
为了区分图,您可以向函数.For示例传递一个额外的参数
plot(x,y,'r+')
将数据绘制为一系列红色+
符号。
发布于 2012-11-12 14:02:36
Plot可以接受更多参数:x_axis(plot,values,modifiers);如果x轴是M个元素的向量,则值可以是MxN元素的矩阵,每个元素都使用单独的颜色绘制。
https://stackoverflow.com/questions/13344919
复制