当前位置:文档之家› matlab第一次实验报告

matlab第一次实验报告

Matlab第一次实验报告
2012029010010
尹康
1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。

并以x,y为坐标显示图像
x(n+1) = a*x(n)-b*(y(n)-x(n)^2);
y(n+1) = b*x(n)+a*(y(n)-x(n)^2)
程序代码:
n=input('input the number of pionts:');
a=input('input a:');
b=input('input b:');
x=[];
y=[];
x(1)=input('input x1:');
y(1)=input('input y1:'); %输入点数、初始值以及系数for i=2:n
x(i)=a*x(i-1)-b*(y(i-1)-x(i-1)^2);
y(i)=a*x(i-1)+b*(y(i-1)-x(i-1)^2); %根据已输入的数据进行迭代end
figure;plot(x,y,'linewidth',2)
axis equal %横纵坐标等比例
text(x(1),y(1),'1st point') %标记初始点
运行结果:
心得体会及改进:在输入某些数据时,所绘曲线可能是一条折线(如:n=5,a=b=x1=1,y1=2)甚至只有一个点(如:n=5,a=b=x1=y1=1),此时可能出现曲线与坐标轴重合或无法看到点的情况,为了更清晰地展现曲线,可以使线宽适当加宽并标记初始点。

2.编程实现奥运5环图,允许用户输入环的直径。

程序代码:
函数circle:
%在指定的圆心坐标处,用指定颜色、宽度的线条绘出指定半径、圆心角的弧
function f=circle(r,x,y,color,linw,alp1,alp2)
alp=linspace(alp1,alp2);
X=r*cos(alp)+x;
Y=r*sin(alp)+y;
plot(X,Y,color,'linewidth',linw)
end
主程序代码:
r=input('input r:');
linw=10; t=0.5; %指定线宽、间隔时间
title('奥运五环图')
hold on
axis equal
axis([-2.8*r,5.4*r,-1.6*r,2.6*r]); %使横纵坐标等比列/给定坐标轴范围pause(t); circle(r,-1.2*r,r,'b',linw, 0.7*pi,1.8*pi);
pause(t); circle(r,0.01*r,0,'y',linw, 0.5*pi,2.2*pi);
pause(t); circle(r,-1.2*r,r,'b',linw,-0.3*pi,0.8*pi);
pause(t); circle(r,1.25*r,r,'k',linw, 0.7*pi,1.8*pi);
pause(t); circle(r,0.01*r,0,'y',linw, 0.1*pi,0.5*pi);
pause(t); circle(r,2.49*r,0,'g',linw, 0.5*pi,2.2*pi);
pause(t); circle(r,1.25*r,r,'k',linw,-0.3*pi,0.8*pi);
pause(t); circle(r,3.70*r,r,'r',linw, 0.7*pi,1.8*pi);
pause(t); circle(r,2.49*r,0,'g',linw, 0.1*pi,0.5*pi);
pause(t); circle(r,3.70*r,r,'r',linw,-0.3*pi,0.8*pi);
pause(t); axis off%隐藏坐标轴
运行结果:
心得体会及改进:1.一般来讲,后绘的图形会覆盖先绘的图形,可
以利用这一特性,将五环分成十段先后绘出,通过覆盖到达“环环相扣”的效果;2.分别绘出十段图形时,发现大段代码相似甚至重复的,因此可编写`circle`函数来达到简化程序的目的;3.适当使用`pause`指令,突出分别绘出的十段图形的“先后”关系,更清晰地展现作者意图及绘图过程;4.第一次绘出图形后发现五环的位置没有达到预想效果时,不必重新建立坐标轴,可以通过微调圆心坐标(0.01r)修正。

3.实现对输入任意长度向量元素的冒泡排序的升序排列(不允许使用sort函数)程序代码:
A=input('input numbers:'); %输入待排序向量(按[a1,a2,……]输入)[m,n]=size(A); %确定向量中元素个数n
sort_A=A;
for i=1:n
for j=1:(n-i)
if sort_A(j)>sort_A(j+1)
t=sort_A(j);
sort_A(j)=sort_A(j+1);
sort_A(j+1)=t;
end
end
end %使用冒泡法对sort_A中元素按升序排序sort_A
运行结果:
心得体会及改进:1.用`input`指令输入向量时,应该用`[`、`]`将
数据括起来;2.为了预防排序后需要调用原向量A的情况,可以将A 中元素复制到sort_A中,再对sort_A进行排序。

相关主题