实 验 二 数据操作和简单编程
实验要求:
为达到理想的实验效果,同学们务必做到:
(1)实验前认真准备,要根据实验目的和实验内容,复习好实验中可能要用到的命令,想好编程的思路,做到胸有成竹,提高上机效率。
(2)实验过程中积极思考,要深入分析命令、程序的执行结果以及各种屏幕信息的含义、出现的原因并提出解决办法。
(3)实验后认真总结,要总结本次实验有哪些收获,还存在哪些问题,并写出实验报告。实验报告应包括实验目的、实验内容、流程图(较大程序)、程序(命令)清单、运行结果以及实验的收获与体会等内容。
同学们在上机过程中会碰到各种各样的问题,分析问题和解决问题的过程就是积累经验的过程。只要同学们按照上面3点要求去做,在学完本课程后就一定会有很大的收获。
实验目的:
1.掌握MATLAB各种表达式的书写规则及常用函数的使用
2.掌握建立和执行M文件的方法
3.掌握利用if,while,for等变成语句实现的方法
实验内容:
一、读程序
读课本上的例4.2,4.3,4.4,4.5,4.7,4.8,4.10,4.11的程序,并输入和调试运行
二、数据操作练习
1、练习基本数学函数
函数类别 | 函数名称 | 功能 | 函数类别 | 函数名称 | 功能 |
三角函数 | sin | 正弦 | 反三角函数 | asin | 反正弦 |
cos | 余弦 | acos | 反余弦 | ||
tan | 正切 | atan | 反正切 | ||
cot | 余切 | acot | 反余切 | ||
sec | 正割(余弦倒数) | asec | 反正割 | ||
csc | 余割(正弦倒数) | acsc | 反余割 | ||
对数函数 | log2 | 以2为底的对数 | 幂函数 | pow2 | 2的幂次 |
log | 以e为底的对数 | sqrt | 开平方 | ||
log10 | 自然对数(以10为底) | 指数函数 | exp | 以e为底的指数 | |
复数函数 | abs | 复数的模 | 复数函数 | real | 复数的实部 |
angle | 相位角 | unwrap | 相位展开 | ||
complex | 由实部和虚部构造复数 | isreal | 是否为实数组 | ||
conj | 复数的共轭 | cplxpair | 整理为共轭对 | ||
imag | 复数的虚部 | ||||
取整函数 | fix | 朝零方向取整 | 其他函数 | mod | 模数 |
floor | 朝负无穷方向取整 | rem | 除后取余数 | ||
ceil | 朝正无穷方向取整 | sign | 符号函数 | ||
round | 四舍五入到最近的整数 | gcd | 最大公约数 | ||
abs | 绝对值 | lcm | 最小公倍数 | ||
2、利用M文件建立大矩阵
3、利用冒号表达式建立一个向量
e1:e2:e3 其中e1为初始值,e2为步长,e3为终止值
linspace(a,b,n) 其中a和b是生成向量的第一个和最后一个元素,n是元素总数。
4、大矩阵可由方括号中的小矩阵或向量建立起来。例如,
A=[1,2,3;4,5,6;7,8,9];
C=[A,eye(size(A));ones(size(A)),A]
5、矩阵的拆分
1)通过下标引用矩阵的元素,例如,A(3,2)=8
2)采用矩阵元素的序号来引用矩阵元素
A=[1,2,3;4,5,6];
A(3) A(:)
3)利用冒号表达式获得子矩阵
C(:,3)
C(2,:)
C(2:4;3:end)
C([1,4],3:end)
4)试验搜集了27个数据,存储在A中,如下:A=[101,102,103,104,105,106,107,108,109,
201,202,203,204,205,206,207,208,209,301,302,303,304,305,306,307,308,309];观察发现前10个数据和后面7个才是正确的,需要把他们组合成一组新的数据。
6、a=[1,2,3;4,5,6;7,8,9];b=ones(3) 比较a*b和a.*b
7、产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。
8、建立一个矩阵A,然后出大于4的元素的位置
9、建立一个字符串向量,字符串包含数字大写字母和小写字母,然后对该向量做如下处理:
(1) 取第1~5个字符组成的子字符串。
(2) 将字符串倒过来重新排列。
(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4) 统计字符串中小写字母的个数。
(1) 取第1~5个字符组成的子字符串。
(2) 将字符串倒过来重新排列。
(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。
(4) 统计字符串中小写字母的个数。
10、练习字符串操作函数
函 数 名 | 函 数 用 途 | 函 数 名 | 函 数 用 途 |
strcat | 链接字符串 | strvcat | 垂直链接字符串 |
strcmp | 比较字符串 | strncmp | 比较字符串的前n个字符 |
findstr | 在其他的字符串中寻该字符串 | strjust | 证明字符数组 |
strmatch | 查可能匹配的字符串 | strrep | 用其他字符串代替改串 |
strtok | 查字符串中的记号 | blanks | 生成空的字符串 |
deblank | 删除字符串内后面的空格 | ischar | 字符串检验 |
iscellstr | 字符串的单元检验 | isletter | 字母检验 |
isspace | 空格检验 | strings | strings函数的帮助 |
11、练习字符转换函数
函 数 | 功 能 | 函 数 | 功 能 |
hex2dec | 将16进制字符串转化为10进制整数 | dec2hex | 将10进制整数转化为16进制字符串 |
bin2dec | 将2进制字符串转化为10进制整数 | dec2bin | 将10进制整数转化为2进制字符串 |
base2dec | 转化B底字符串为10进制整数 | matlab二进制字符串转数组hex2num | 将16进制字符转化为双精度数 |
upper | 改该字符串为大写 | lower | 改该字符串为小写 |
fprintf | 把格式化的文本写到文件中或显示屏上 | sprintf | 用格式控制,数字转换成字符串 |
sscanf | 用格式控制,字符串转换成数字 | char | ASCII码转换成字符串 |
num2str | 数字转换成字符串 | int2str | 整数转换成字符串 |
12、用结构体矩阵来存储5名学生的基本情况数据,每个学生的数据包括学号、姓名、专业和六门课程的成绩。
struct 建立或转换为结构矩阵
getfield 获取结构成员的内容
rmfield 删除结构成员
fieldnames 获取结构成员名
13、练习单元数据
b={10,'liu',[11,21;34,78];12,'wang',[34,191;27,578];14,'cai',[13,890;67,231];}
b(3,3) b{3,3}
celldisp(b) celldisp(b,’ss23’)
celldisp 显示单元矩阵内容
cell2struct 把单元矩阵转换为结构矩阵
cellplot 显示单元矩阵的图形描述
struct2cell 把结构矩阵转换为单元矩阵
14、 input函数
变量名=input(‘提示信息\n’,‘s’)
disp 函数
disp ( 输出项 )
例如:a=5;
disp(a)
pause 函数
用法:pause或pause(n)
三、编程练习
1)[100,999]之间能被21整除的数的个数(提示:先利用冒号表达式,再利用find和length函数,通过Help查询用法)。
2) 建立一个字符串向量,删除其中的大写字母(提示:利用find函数和空矩阵)。
3)求分段函数的值。
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。
4)输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。
要求:
a)分别用if语句和switch语句实现。
b)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。
5)硅谷公司员工的工资计算方法如下:
c)工作时数超过120小时者,超过部分加发15%。
d)工作时数低于60小时者,扣发700元。
e)其余按每小时84元计发。
试编程按输入的工号和该员工的工时数,计算应发工资。
6)设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。
7)建立5×6矩阵,要求输出矩阵第n行元素。当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
思考题:
任意输入10个两位整数,输出其中小于平均值的奇数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论