matlab四合一(dream)(2)

2019-04-22 19:42

9.变量操作

1)新建一个脚本,命名为calculateGrades.m2)load数据classGrades.mat3)查看载入的数据,输入前5行到命令行。第一列表示学号1~15,其余7列表示7次题目的分数(0~5分),有一些为NaN,表示该同学缺席或者没交作业,我希望你们当中没有4)我们只关心成绩,提取载入数据中的分数(2~8列),赋给变量grades,需要注意的是,请使用end或者size(namesAndGrades,2),这样我们的代码适用于任意维度的矩阵5)计算所有人每次成绩的平均成绩,结果应为1?7的向量,使用mean函数,结果显示在命令行,我们发现含有NaN值的那一列得到结果也为NaN,为了避免这个问题,使用nanmean函数重新计算。将这个结果赋给变量meanGrades,并显示在命令行查看以确保当中没有NaN值。6)设定百分制70分可以评为等级B,那么5分制的话,就是3.5分可以评定为B。a.建立meanMatrix变量,维度跟grades相同,其中每行的值分别是meanGrades中不同列的值,使用repmat来建立。输出到命令行来检查是否正确b.按照公式curvedGrades=3.5(grades/meanMatrix)计算标准化后的成绩,记在变量curvedGrades中,记得要使用./c.使用nanmean计算curvedGrades的平均值查看是否都是3.5d.因为我们的计算方法,有可能一些分数接近5分,那么计算的结果将大于5,采用find函数,将大于5的结果置为57)按列计算curvedGrades的平均结果,使用nanmean,注意维度,得到每个同学7次作业的平均成绩,记为totalGrade。此外,我们希望结果为1~5的正数,因此记得使用ceil。接下来生命一个变量letters,其值为FDCBA。按照totalGrade中的值分别对应等级评定,给出每位同学的最终等级评定结果。使用switch函数,例如成绩为1的,则评为F,成绩为5则为A。最后使用disp函数,输出Grades: letterGrades运行结果应是这样的:

calculateGrades

clear all;

x=xlsread('testdata.xls') ans=x(1:5,:)

grades=x(:,2:end); ans=mean(grades)

meanGrades=nanmean(grades)

meanMatrix=repmat(meanGrades,size(grades,1),1) curvedGrades=3.5*(grades./meanMatrix); ans=nanmean(curvedGrades)

curvedGrades(find(curvedGrades>5))=5; totalGrades=ceil(nanmean(curvedGrades'))' letters='FDCBA';

for k=1:length(totalGrades) switch totalGrades(k) case 1

Grades(k)=letters(1); case 2

Grades(k)=letters(2); case 3

Grades(k)=letters(3); case 4

Grades(k)=letters(4); case 5

Grades(k)=letters(5); end end

disp(['Grades:',Grades]);

10.抛球模型

1)建立一个新脚本,命名问throwBall.m。

2)定义常量:球的初始高度h=1.5m;重力加速度g=9.8m/s2;初始球速为v=4m/s;初始抛球的角度为θ=45度。

3)生成时间向量,0~1之间,1000个点线性分布,使用linspace。

4)我们已知抛球的物理模型:假定x为距离,y为高度,则根据高中物理所学水平位移为

x(t)?vcos(??180)t,垂直位移为y(t)?h?vsin(??180)t?12gt,利用该公式计算x和y。 25)计算何时小球撞倒地面,使用find找到高度变负的地方,那么水平距离就是那时间点的x值,使用disp输出结果:小球在x米处撞倒地面。

6)使用figure打开绘图窗口,绘制y和x的对应曲线,xlabel,ylabel和title,hold on figure,绘制地面位置,使用黑色,虚线。这应该是一个水平曲线, 7)运行代码查看结果。

throwBall

clear all; figure(2) h=1.5; g=9.8; v=4; q=45; q=45

t=linspace(0,1,1000); x=v*cos(q*pi/180)*t; plot(t,x,'r'); hold on;

t=linspace(0,1,1000);

y=h+v*sin(q*pi/180)*t-0.5*g*t.^2; plot(t,y);

t0=min(find(y<=0)); x0=x(t0);

xlabel('时间轴'); ylabel('函数'); title('抛球模型'); legend('x(t)','y(t)');

disp(['小球在',num2str(x0),'处撞到地面']); hold on;

plot([0 max(x)],[0 0],'k--'); hold off;

11.加密算法

1)新建一个脚本命名为encrypt.m。

2)定义原始密码为“This is my top secret message!“。 3)让我们随机对原始密码中的字符进行随机排序,以生成加密文本,使用randperm和length。 4)对原始密码利用加密文本进行加密,加密后的文本命名为encoded。

5)生成一个两列的矩阵,第一列数据为加密文本的序号,第二列为正常的序列从1开始到文本长度,使用length。

6)使用sortrows函数按照第一列对第二列进行排序,以得到解密的序号

7)将第二列序号取出,对于加密后的文本encoded按照解密后的序号进行值的索引则得到解密文本

8)输入原始,加密和解密文本到命令行

9)使用strcmp函数对原始密码和解密文本进行比较

10)解密正确值为1,错误为0,使用disp函数输出结果到命令行模式。 结果看起来应该是这样的:

Original : This is my top secret message! Encoded : tspsm esos shit r imc g!eaTeye Decoded : This is my top secret message! Decoded correctly (1 true, 0 false) : 1

Encrypt

clear all;

Original='This is my top secret message!' a=randperm(length(Original)) Encoded=Original(a) p=[1:1:length(a)] x=[a;p]'

y=sortrows(x,1) Decorded=y(:,2)

s=Encoded(Decorded) disp(['Original:',Original]); disp(['Encoded:',Encoded]); disp(['Decoded:',s]);

correct=strcmp(Original,s);

disp(['Decoded correctly (1 true, 0 false):',num2str(correct)])

第二题

目的:


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

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

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

马上注册会员

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