matlab四合一(dream)(3)

2019-04-22 19:42

3) 函数的使用以及数据可视化。

4) 题目要求要比题目一灵活,根据自己所想来完成可以实现题目要求的函数。

题目说明:所有的题目代码写入相应的脚本中,如果题目没有要求特定的脚本文件名,自行定义一个即可。

1.semilog plot:

在过去的5年中,某一个班级的学生数量分别为15,25,55,115,144。看起来,学生数量随时间是呈指数分布的。为了验证这个想法,使用semilogy对5年的学生数量进行绘制,使用xlabel,ylabel,title对图进行标注,曲线为虚线,红色,数据点使用方块为marker,marker颜色为绿色。请绘制该图,我想如果想要看到所有5个点的marker还需要使用xlim对x轴做标度。如果果真呈指数分布,那么结果通过semilogy的方式绘制出来看起来应该是呈线性的。

参考结果图:

103growth trendnumber of students1021010123years456

clear all; x=1:1:5;

y=[15,25,55,115,144];

semilogy(x,y,'rs--','MarkerFaceColor','g'); xlabel('years');

ylabel('number of students'); title('growth trend'); xlim([0 6]); 2.bar graph:

生成5个随机数的向量,使用bar函数绘制柱状图,要求bar为红色。结果图参考如下:

Bar graph of 5 random values10.90.80.70.60.50.40.30.20.1012345

clear all; x=1:1:5; y=rand(1,5); bar(x,y,'r');

title('Bar graph of 5 random values'); 3.插入和面绘制:

A.使用rand做一个5×5的随机矩阵z0;

B.使用meshgrid以及1:5的向量生成x0和y0,meshgrid的两个输入都使用1:5的向量; C.使用meshgrid以及1:0.1:5的向量生成x1和y1,两个输入都使用1:0.1:5的向量 D.使用interp2在x1和y1位置对x0,y0,z0进行插值得到z1; E.使用surf绘制z1,colormap设置为hsv,shading设置为interp; F.使用hold on保持figure,使用contour绘制等高线图; G.添加colorbar 结果参考下图:

10.910.80.60.40.20604020 004020600.80.70.60.50.40.30.20.10

clear all; z0=rand(5,5); x=1:5;

[x0,y0]=meshgrid(x,x); y=1:0.1:5;

[x1,y1]=meshgrid(y,y); z1=interp2(x0,y0,z0,x1,y1); surf(y,y,z1); colormap(hsv); shading(interp); hold on;

contour(y,y,z1); colorbar; hold off;

4.使用find:

写一个函数,函数声明如下:ind=findNearest(x,desiredVal)。x是一个向量,deisredVal为一个标量,该函数实现的功能为在x中找到与desiredVal最接近的数所在的位置:ind。如果x中有多个值接近desiredVal,则返回多个位置。使用的函数参考:abs,min和find。

函数运行结果可参考下例:

clear all; x=1:5;

desiredVal=2.5;

a=abs(x(:)-desiredVal) ind=min(find(a(:)<1)) 5.循环和流程控制

写一个函数叫loopTest(N),该函数检测1:N的每一个数是否被2,3整除,如果被2整除则输出‘n is divisible by 2’,被3整除则输出’n is divisible by 3’,也可能都不能整除也能都不能整除则输出’n is NOT divisible by 2 AND 3.’ ‘n is divisible by 2 AND 3.’参考函数为for,mod,if,else,elseif。运行结果可参考下图:

function loopTest(6) for n=6

if mod(n,2)==0&&mod(n,3)~=0

disp(['',num2str(n) ,'n is divisible by 2'])

else if mod(n,3)==0&&mod(n,2)~=0 disp(['',num2str(n),'n is divisible by 2'])

else if mod(n,3)~=0&&mod(n,2)~=0 disp(['',num2str(n) ,'n is NOT divisible by 2 AND 3']) else

disp(['',num2str(n),'n is divisible by 2 AND 3']) end end end end

6.平滑器:

声明函数smoothed=rectFilt(x,width),该函数将数据x以特定的窗宽范围内进行平均滤波。例如如果width=5,那么x中第n个点的值的平滑算法为mean(x(n-2:n+2))。但是要注意的是在边缘会有泄漏的问题,上例中也就是在n<3和n>length(x)-2时会出问题。我想这几个边缘的点我们可以考虑保持原数据不动。

A. 注意经过平滑后得到的数据与原数据点数应相同; B. 为左右平均时对称,我们在输入参数width时应选择奇数; C. 确保边缘的情况不会出问题;

D. 提示使用循环和mean函数进行平滑运算,如果你对卷积很熟悉那么也可以使用conv

函数进行卷积运算;

E. 函数写完后,载入noisyData.mat数据进行测试,如果载入数据失败,那么使用xlsread

函数读取noisyData.xls数据也是一样的。 我使用width为11,参考图如下:

Smoothing Demonstration1.5Original DataSmoothed1 0.5Data value0-0.5-1-1.5 01020304050Index60708090100


matlab四合一(dream)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年郑州市初中毕业年级适应性测试

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: