Matlab实验三复习资料.docx
《Matlab实验三复习资料.docx》由会员分享,可在线阅读,更多相关《Matlab实验三复习资料.docx(16页珍藏版)》请在冰豆网上搜索。
Matlab实验三复习资料
实验三MATLAB语言的程序设计
一、实验目的:
1、熟悉MATLAB程序编辑与设计环境
2、掌握各种编程语句语法规则及程序设计方法
3、函数文件的编写和设计
4、了解和熟悉跨空间变量传递和赋值
二、实验基本知识:
1、程序流程控制语句
for循环结构
语法:
fori=初值:
增量:
终值
语句1
……
语句n
end
说明:
1.i=初值:
终值,则增量为1。
2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。
while循环结构
语法:
while逻辑表达式
循环体语句
end
说明:
1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。
若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。
若表达式的值为假,则程序执行end之后的语句。
2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。
(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值。
)
3、while循环也可以嵌套、其结构如下:
while逻辑表达式1
循环体语句1
while逻辑表达式2
循环体语句2
end
循环体语句3
end
if-else-end分支结构
if表达式1
语句1
elseif表达式2(可选)
语句2
else(可选)
语句3
end
end
说明:
1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。
2.elseif表达式2与else为可选项,这两条语句可依据具体情况取舍。
3.注意:
每一个if都对应一个end,即有几个if,记就应有几个end。
switch-case结构
语法:
switch表达式
case常量表达式1
语句组1
case常量表达式2
语句组2
……
otherwise
语句组n
end
说明:
1.switch后面的表达式可以是任何类型,如数字、字符串等。
2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。
程序流程控制指令
break、return、pause
2、函数文件的结构和编写方法
函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。
M函数文件的结构
(1)函数定义行(function)
(2)H1行(函数帮助文本的第一行)
(3)函数帮助文本
(4)函数体
(5)注释
函数文件编写后,保存时,其文件名必须与函数名相同。
注意:
函数名不要与MATLAB自身的函数命令相同。
三、实验内容:
2、用for循环语句实现求1~100的和
编程:
sum=0;
fori=1:
100
sum=sum+i;
end
sum
运行结果:
>>ljia
sum=
5050
3、用for循环语句实现编写一个求阶乘的函数文件。
编程:
functiony=jcheng(n)
y=1;
fori=1:
n
y=y*i;
end
y
运行结果:
假设n=5
>>jcheng(5)
y=
120
ans=
120
4、找到一个n!
>10100的值(利用上题的阶乘函数文件)
编程:
i=1;
while
(1)
y=jcheng(i);
ify>10^100
break;
end
i=i+1;
end
i
运行结果:
>>zhaon
y=
1
y=
2
y=
6
y=
24
y=
120
y=
720
y=
5040
y=
40320
y=
362880
y=
3628800
y=
39916800
y=
479001600
y=
6.2270e+009
y=
8.7178e+010
y=
1.3077e+012
y=
2.0923e+013
y=
3.5569e+014
y=
6.4024e+015
y=
1.2165e+017
y=
2.4329e+018
y=
5.1091e+019
y=
1.1240e+021
y=
2.5852e+022
y=
6.2045e+023
y=
1.5511e+025
y=
4.0329e+026
y=
1.0889e+028
y=
3.0489e+029
y=
8.8418e+030
y=
2.6525e+032
y=
8.2228e+033
y=
2.6313e+035
y=
8.6833e+036
y=
2.9523e+038
y=
1.0333e+040
y=
3.7199e+041
y=
1.3764e+043
y=
5.2302e+044
y=
2.0398e+046
y=
8.1592e+047
y=
3.3453e+049
y=
1.4050e+051
y=
6.0415e+052
y=
2.6583e+054
y=
1.1962e+056
y=
5.5026e+057
y=
2.5862e+059
y=
1.2414e+061
y=
6.0828e+062
y=
3.0414e+064
y=
1.5511e+066
y=
8.0658e+067
y=
4.2749e+069
y=
2.3084e+071
y=
1.2696e+073
y=
7.1100e+074
y=
4.0527e+076
y=
2.3506e+078
y=
1.3868e+080
y=
8.3210e+081
y=
5.0758e+083
y=
3.1470e+085
y=
1.9826e+087
y=
1.2689e+089
y=
8.2477e+090
y=
5.4434e+092
y=
3.6471e+094
y=
2.4800e+096
y=
1.7112e+098
y=
1.1979e+100
i=
70
5、编写一个乘法表(9×9)
编程:
fori=1:
9
A=[];
forj=1:
i;
A=[A,sprintf('%dx%d=%d',j,i,i*j)];
end
disp(A)
end
运行结果:
>>cfb
1x1=1
1x2=22x2=4
1x3=32x3=63x3=9
1x4=42x4=83x4=124x4=16
1x5=52x5=103x5=154x5=205x5=25
1x6=62x6=123x6=184x6=245x6=306x6=36
1x7=72x7=143x7=214x7=285x7=356x7=427x7=49
1x8=82x8=163x8=244x8=325x8=406x8=487x8=568x8=64
1x9=92x9=183x9=274x9=365x9=456x9=547x9=638x9=729x9=81
6、判断y向量的元素属于3n、3n+1或3n+2,设y=[3,5,7,9,11,16]。
编程:
假设:
将3n放进数组A,将3n+1放进数组B,将3n+2放进数组C。
y=[35791116;];
A=[];
B=[];
C=[];
j=1;k=1;m=1;
fori=1:
6
x=rem(y(i),3);
ifx==0
A(j)=y(i);j=j+1;
end
ifx==1
B(k)=y(i);k=k+1;
end
ifx==2
C(m)=y(i);m=m+1;
end
end
disp(A)
disp(B)
disp(C)
运行结果:
>>yush
39
716
511
7、已知一维数组A=[2,4,5,8,10]、B=[4,9,6,7,4],用for循环语句实现
。
求和函数可用sum().
编程:
A=[245810;];
B=[49674;];
C=[];
y=0;
fori=1:
5
C(i)=(A(i)*B(5-i+1));
y=y+C(i);
end
y
运行结果:
>>timu7
y=
178
8、
(1)编写求解一维数组平均值的函数文件。
(2)编写求解二维数组平均值的函数文件。
编程1:
functiony=ywjz(A)
x=0;
n=numel(A);
fori=1:
n
x=x+A(i);
end
v=x/n;
运行结果:
>>y=ywjz([12345])
y=
3
编程2:
functiony=ewjz(A)
x=0;
n=numel(A);
fori=1:
n
x=x+A(i);
end
y=x/n;
运行结果:
>>y=ewjz([23;45;67;])
y=
4.5000
调用验证:
A=[133;557;];
y=ewjz(A);
y
>>aa
y=
4
9、编写验证魔方矩阵的函数文件,输出要求如下:
(1)如果输入矩阵的维数小于3,输出显示’error’
(2)如果输入矩阵的不是方阵,输出显示’thesizeofmatrixXmustbeN-by-Nmatrix’
(3)显示行、列和及其对角线求和后的值,并判断其和是否相同,若不同,显示‘No’,相同显示‘Yes’
编程:
functionyanzh(x)
[r,c]=size(x);
ifr~=c
disp('thesizeofmatrixXmustbeN-by-Nmatrix')
elseifr<3
disp('eroor')
end
end
S=[sum(x,1),sum(x,2)',sum(diag(x))',sum(diag(rot90(x)))'];
ifS
(1)==S
(2)&S
(2)==S(3)&S(3)==S(4)&S
(1)==S(4)
disp('yes')
else
disp('no')
end
验证运行:
>>yanzh([816;357;492;])
yes
>>yanzh([816;357;])
thesizeofmatrixXmustbeN-by-Nmatrix
no
>>yanzh([86;35;])
eroor
no
>>yanzh([826;357;492;])
no