关于matlab中plotyy命令的疑问(采用数组化编程和for循环的差别)在用matlab中plotyy命令作双纵坐标图时遇到下列问题:(1)当采用for循环时for x=0:0.1:20 y1 =200*exp(-0.05*x)*sin(x) y2 = 0.8*exp(-0.5*x)
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 15:26:41
关于matlab中plotyy命令的疑问(采用数组化编程和for循环的差别)在用matlab中plotyy命令作双纵坐标图时遇到下列问题:(1)当采用for循环时for x=0:0.1:20 y1 =200*exp(-0.05*x)*sin(x) y2 = 0.8*exp(-0.5*x)
关于matlab中plotyy命令的疑问(采用数组化编程和for循环的差别)
在用matlab中plotyy命令作双纵坐标图时遇到下列问题:(1)当采用for循环时
for x=0:0.1:20
y1 =200*exp(-0.05*x)*sin(x)
y2 = 0.8*exp(-0.5*x)*sin(10*x)
plotyy(x,y1,x,y2)
hold on
end
图像为:
(2)当采用数组化编程时
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
plotyy(x,y1,x,y2)
图像为:
问题:
(1)为什么会出现这种差别
(2)如果我用for循环编程想得到图2所示的效果,应该如何操作
附言:这只是个简单的例子,笔者编程能力有限,现编一个较复杂的程序,采用的是for循环做的,数据处理时想用双纵坐标图
关于matlab中plotyy命令的疑问(采用数组化编程和for循环的差别)在用matlab中plotyy命令作双纵坐标图时遇到下列问题:(1)当采用for循环时for x=0:0.1:20 y1 =200*exp(-0.05*x)*sin(x) y2 = 0.8*exp(-0.5*x)
需要用循环的话:
x=0:0.1:20;
len = length(x);
y1 = zeros(len,1); y2 = y1;
for i=1:len
y1(i) =200*exp(-0.05*x(i))*sin(x(i));
y2(i) = 0.8*exp(-0.5*x(i))*sin(10*x(i));
end
plotyy(x,y1,x,y2)
Matlab的基本数据类型是矩阵,能够用向量化编程时尽量避免使用循环!
分析:
for x=0:0.1:20
%每次产生一个点对
y1 =200*exp(-0.05*x)*sin(x)
y2 = 0.8*exp(-0.5*x)*sin(10*x)
plotyy(x,y1,x,y2) 每次在前一次的基础上加上一个点
hold on
end
显示的内容并没错,你可以用 axis([0 20 -200 200]) 查看结果
黑色部分是因为你逐点绘制时,会添加很多刻度和刻度标记,这些内容太过密集,看上去就那样了