001双峰曲线图:
z=peaks(40);
mesh(z);
surf(z)
002解方程:
A=[3,4,-2;6,2,-3;45,5,4];
>> B=[14;4;23];
>> root=inv(A)*B
003傅里叶变换
load mtlb ;
subplot(2,1,1);
plot(mtlb);
>> title('原始语音信息');
>> y=fft(mtlb);
>> subplot(2,1,2);
>> yy=abs(y);
>> plot(yy);
>> title('傅里叶变换')
004输入函数:
a=input('How many apples\n','s')
005输出函数
a=[1 2 3 4 ;5 6 7 8;12 23 34 45;34 435 23 34]
a =
1 2 3 4
5 6 7 8
12 23 34 45
34 435 23 34
disp(a)
a =
1 2 3 4
5 6 7 8
12 23 34 45
34 435 23 34
b=input('how many people\n' ,'s')
how many people
two people
b =
two people
>> disp(b)
two people
>>
006求一元二次方程的根
a=1;b=2;c=3;
d=sqrt(b^2-4*a*c);
x1=(-b+d)/(2*a)
x1 =
-1.0000 + 1.4142i
>> x2=(-b-d)/(2*a)
x2 =
-1.0000 - 1.4142i
007求矩阵的相乘、转置、存盘、读入数据A=[1 3 5 ;2 4 6;-1 0 -2;-3 0 0];
>> B=[-1 3;-2 2;2 1];
>> C=A*B
C =
3 14
2 20
-3 -5
3 -9
>> C=C'
C =
3 2 -3 3
14 20 -5 -9
>> save mydat C
>> clear
>> load mydat C
008编写数学计算公式:
A=2.1;B=-4.5;C=6;D=3.5;E=-5;
K=atan(((2*pi*A)+E/(2*pi*B*C))/D) K =
1.3121
009
A=[1 0 -1;2 4 1;-2 0 5];
>> B=[0 -1 0;2 1 3;1 1 2];
>> H=2*A+B
H =
2 -1 -2
6 9 5
-3 1 12
>> M=A^2-3*B
M =
3 3 -6
2 1
3 -2
-15 -3 21
>> Y=A*B
Y =
-1 -2 -2
9 3 14
5 7 10
>> R=B*A
R =
-2 -4 -1
-2 4 14
-1 4 10
>> E=A.*B
E =
0 0 0
4 4 3
-2 0 10
>> W=A\B
W =
0.3333 -1.3333 0.6667
0.2500 1.0000 0.2500
0.3333 -0.3333 0.6667 >> P=A/B
P =
-2.0000 3.0000 -5.0000
-5.0000 3.0000 -4.0000
7.0000 -9.0000 16.0000
>> Z=A.\B
Warning: Divide by zero.
Z =
0 -Inf 0
1.0000 0.2500 3.0000
-0.5000 Inf 0.4000
>> D=A./B
Warning: Divide by zero.
D =
Inf 0 -Inf
1.0000 4.0000 0.3333
-2.0000 0 2.5000
010
a=4.96;b=8.11;
>> M=exp(a+b)/log10(a+b)
M =
4.2507e+005
011求三角形面积:
a=9.6;b=13.7;c=19.4;
>> s=(a+b+c)/2;
>> area=sqrt(s*(s-a)*(s-b)*(s-c))
area =
61.1739
012逻辑运算
A=[-1 0 -6 8;-9 4 0 12.3;0 0 -5.1 -2;0 -23 0 -7]; >> B=A(:,1:2)
B =
-1 0
-9 4
0 0
0 -23
>> C=A(1:2,:)
C =
-1.0000 0 -6.0000 8.0000 -9.0000 4.0000 0 12.3000
>> D=B'
D =
-1 -9 0 0
0 4 0 -23
>> A*B
ans =
1.0000 -184.0000
-27.0000 -266.9000
0 46.0000 207.0000 69.0000
>> C ans = 0 0 1 0 1 0 0 0 >> C&D ans = 1 0 0 0 0 1 0 1 >> C|D ans = 1 1 1 1 1 1 0 1 >> ~C|~D ans = 0 1 1 1 1 0 1 0 013矩阵运算练习: A=[8 9 5;36 -7 11;21 -8 5] A = 8 9 5 36 -7 11 21 -8 5 >> B B = -1 3 -2 2 0 3 -3 1 9 >> RT=A*B RT = -5 29 56 -83 119 6 -52 68 -21 >> QW=A.*B QW = -8 27 -10 72 0 33 -63 -8 45 >> ER=A^3 ER = 6272 3342 2944 15714 -856 5260 8142 -1906 2390 >> BF=A.^3 BF = 512 729 125 46656 -343 1331 9261 -512 125 >> A/B ans = 3.1341 4.9634 -0.4024 -1.2561 12.5244 -3.2317 -1.9878 6.4512 -2.0366 >> EKV=B\A EKV = 10.7195 -1.2683 3.5244 9.4756 1.5854 3.7195 4.8537 -1.4878 1.3171 >> KDK=[A,B] KDK = 8 9 5 -1 3 -2 36 -7 11 2 0 3 21 -8 5 -3 1 9 >> ERI=[A;B] ERI = 8 9 5 36 -7 11 21 -8 5 -1 3 -2 2 0 3 -3 1 9 014一般函数的调用: A=[2 34 88 390 848 939]; >> S=sum(A) S = 2301 >> min(A) ans = 2 >> EE=mean(A) EE = 383.5000 >> QQ=std(A) QQ = 419.3794 >> AO=sort(A) AO = 2 34 88 390 848 939 >> yr=norm(A) yr = 1.3273e+003 >> RT=prod(A) RT = 1.8583e+012 >> gradient(A) ans = 32.0000 43.0000 178.0000 380.0000 274.5000 91.0000 >> max(A) ans = 939 >> median(A) ans = 239 >> diff(A) ans = 32 54 302 458 91 >> length(A) ans = 6 >> sum(A) ans = 2301 >> cov(A) ans = 1.7588e+005 >> 015矩阵变换: A=[34 44 23;8 34 23;34 55 2] A = 34 44 23 8 34 23 34 55 2 >> tril(A) ans = 34 0 0 8 34 0 34 55 2 >> triu(A) ans = 34 44 23 0 34 23 0 0 2 >> diag(A) ans = 34 34 2 norm(A) ans = 94.5106 >> rank(A) ans = 3 >> det(A) ans = -23462 >> trace(A) ans = 70 >> null(A) ans = Empty matrix: 3-by-0 >> eig(A) ans = 80.1587 12.7671 -22.9257 >> poly(A) ans = 1.0e+004 * 0.0001 -0.0070 -0.1107 2.3462 >> logm(A) Warning: Principal matrix logarithm is not defined for A with nonpositive real eigenvalues. A non-principal matrix logarithm is returned. > In funm at 153 In logm at 27 ans = 3.1909 + 0.1314i 1.2707 + 0.1437i 0.5011 - 0.2538i 0.4648 + 0.4974i 3.3955 + 0.5438i 0.1504 - 0.9608i 0.2935 - 1.2769i 0.8069 - 1.3960i 3.4768 + 2.4663i >> fumn(A) ??? Undefined command/function 'fumn'. >> inv(A) ans = 0.0510 -0.0502 -0.0098 -0.0326 0.0304 0.0255 0.0305 0.0159 -0.0343 >> cond(A) ans = 8.5072 >> chol(A) ??? Error using ==> chol Matrix must be positive definite. >> lu(A) ans = 34.0000 44.0000 23.0000 0.2353 23.6471 17.5882 1.0000 0.4652 -29.1816 >> pinv(A) ans = 0.0510 -0.0502 -0.0098 -0.0326 0.0304 0.0255 0.0305 0.0159 -0.0343 >> svd(A) ans = 94.5106 22.3456 11.1095 >> expm(A) ans = 1.0e+034 * 2.1897 4.3968 1.9382 1.3154 2.6412 1.1643 1.8782 3.7712 1.6625 >> sqrtm(A) ans = 5.2379 + 0.2003i 3.4795 + 0.2190i 1.8946 - 0.3869i 0.5241 + 0.7581i 5.1429 + 0.8288i 2.0575 - 1.4644i 3.0084 - 1.9461i 4.7123 - 2.1276i 2.1454 + 3.7589i >> 016多项式的计算: A=[34 44 23;8 34 23;34 55 2] A = 34 44 23 8 34 23 34 55 2 >> P=poly(A) P = 1.0e+004 * 0.0001 -0.0070 -0.1107 2.3462 >> PPA=poly2str(P,'X') PPA = X^3 - 70 X^2 - 1107 X + 23462 017多项式的运算: p=[2 6 8 3];w=[32 56 0 2]; >> m=conv(p,w) m = 64 304 592 548 180 16 6 >> [q,r]=deconv(w,p) q = 16 r = 0 -40 -128 -46 >> dp=polyder(w) dp = 96 112 0 >> [num,den]=polyder(w,p) num = 80 512 724 312 -16 den = 4 24 68 108 100 48 9 >> b=polyfit(p,w,4) Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 74 b = -0.6704 9.2037 -32.2593 0 98.1333 >> r=roots(p) r = -1.2119 + 1.0652i -1.2119 - 1.0652i -0.5761 018求多项式的商和余 p=conv([1 0 2],conv([1 4],[1 1])) p = 1 5 6 10 8 >> q=[1 0 1 1] q = 1 0 1 1 >> [w,m]=deconv(p,q) w = 1 5 m = 0 0 5 4 3 >> cq=w;cr=m; >> disp([cr,poly2str(m,'x')]) 5 x^2 + 4 x + 3 >> disp([cq,poly2str(w,'x')]) x + 5 019将分式分解 a=[1 5 6];b=[1]; >> [r,p,k]=residue(b,a) r = -1.0000 1.0000 p = -3.0000 -2.0000 k = [] 020计算多项式: a=[1 2 3;4 5 6;7 8 9]; >> p=[3 0 2 3]; >> q=[2 3]; >> x=2; >> r=roots(p) r = 0.3911 + 1.0609i 0.3911 - 1.0609i -0.7822 >> p1=conv(p,q) p1 = 6 9 4 12 9 >> p2=poly(a) p2 = 1.0000 -15.0000 -18.0000 -0.0000 >> p3=polyder(p) p3 = 9 0 2 >> p4=polyval(p,x) p4 = 31 021求除式和余项: [q,r]=deconv(conv([1 0 2],[1 4]),[1 1 1]) 022字符串的书写格式: s='student' s = student >> name='mary'; >> s1=[name s] s1 = marystudent >> s3=[name blanks(3);s] s3 = mary student >> 023交换两个数: clear clc a=[1 2 3 4 5]; b=[6 7 8 9 10]; c=a; a=b; b=c; a b 24If语句 n=input('enter a number,n='); if n<10 n end 025 if 双分支结构 a=input('enter a number ,a='); b=input('enter a number ,b='); if a>b max=a; else max=b; end max 026三个数按照由大到小的顺序排列:A=15;B=24;C=45; if A T=A;A=B;B=T; elseif A T=A;A=C;C=T; elseif B T=B;B=C;C=T; end A C 027建立一个收费优惠系统: price=input('please jinput the price : price=') switch fix(price/100) case[0,1] rate =0; case[2,3,4] rate =3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100; case num2cell(25:49) rate=10/100; otherwise rate=14/100; end price=price*(1-rate) 028:while循环语句 i=0;s=0; while i<=1212 s=s+i; i=i+1; end s 029,用for循环体语句: sum=0; for i=1:1.5:100; sum=sum+i; end sum 030循环的嵌套 s=0; for i=1:1:6; for j=1:1:8; s=s+i^j; MATLAB 第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; 实验二Matlab程序设计基本方法 覃照乘自092 电气工程学院 一、实验目的: 1、熟悉MATLAB 程序编辑与设计环境 2、掌握各种编程语句语法规则及程序设计方法 3、函数文件的编写和设计 4、了解和熟悉跨空间变量传递和赋值 二、实验基本知识: ◆for循环结构 语法:for i=初值:增量:终值 语句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 else if 表达式2(可选) 语句2 else(可选) 语句3 end end 说明:1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。 2.else if表达式2与else为可选项,这两条语句可依据具体情况取舍。 3.注意:每一个if都对应一个end,即有几个if,记就应有几个end。 ◆switch-case结构 语法:switch表达式 case常量表达式1 语句组1 case常量表达式2 语句组2 …… otherwise 语句组n end matlab训练 建立一个脚本文件,用于两个变量值的互相交换。 x=input('输入变量x='); y=input('输入变量y='); z=x; x=y; y=z; x y 比较从键盘输入的两个数的大小,输出其中较大的数。(扩展,输出两个同型矩阵中对应位置较大的数) function [ y ] = ex2( x ) a=input('输入数字x='); b=input('输入数字y='); if a>b fprintf('较大数为%d\n',a) elseif a c = input('请输入常数项: '); discriminant = b^2 - 4 * a * c; if discriminant > 0 x1 = (-b + sqrt(discriminant)) / (2*a); x2 = (-b - sqrt(discriminant)) / (2*a); fprintf('x1 = %f\n', x1); fprintf('x2 = %f\n', x2); elseif discriminant == 0 x1 = ( -b ) / (2*a); fprintf('x1 = x2 = %f\n', x1); else real_part = (-b) / (2*a); imag_part = sqrt( abs(discriminant)) / (2*a); disp('此方程无实根:'); fprintf('x1 = %f + i %f \n',real_part, imag_part); fprintf('x1 + %f - i %f \n', real_part, imag_part); end 编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。function ex4 r=input('请输入此圆的半径: '); S=pi*r; C=2*pi*r; fprintf('此圆的面积是:'); disp(S) fprintf('此圆的周长是:'); 《MATLAB程序设计与应用(刘卫国)》(第二版)实验一MATLAB运算基础 1.(1) z1=2*sin(pi*85/180)/(1+exp(2)) (2)x=[2,1+2i;-0.45,5]; z2=log(x+sqrt(1+x.^2))/2 (3)a=-3.0:0.1:3.0; z3=0.5*(exp(0.3*a)-exp(-0.3*a)).*sin(a+0.3)+log((0.3+a)/2) (4)t=0:0.5:2.5; z4=(t>=0&t<1).*t.^2+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3).*(t.^2-2*t+1) 2. A=[12,34,-4;34,7,87;3,65,7]; B=[1,3,-1;2,0,3;3,-2,7]; (1)a=A+6*B b=A-B+eye(size(A)) %I=eye(size(A)) (2)c=A*B d=A.*B (3)e=A^3 f=A.^3 (4)g=A/B h=B\A (5)m=[A,B] n=[A([1,3],:);B^2] 3. A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20;21,22,23,24,25]; B=[3,0,16;17,-6,9;0,23,-4;9,7,0;4,13,11]; (1)C=A*B (2)D=C(3:end,2:end) 4.(1) a=100:999; b=rem(a,21)==0; c=find(b); d=length(c) (2)ch='Just as Bianhaiman said,Xiehong is ...'; e=find(ch>='A'&ch<='Z'); ch(e)=[] 实验二 MATLAB矩阵分析与处理 1.E=eye(3); 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40 %第六章微分方程问题的解法 % 微分方程的解析解方法 % 常微分方程问题的数值解法 % 微分方程问题算法概述 % 四阶定步长Runge-Kutta算法及MATLAB 实现 % 一阶微分方程组的数值解 % 微分方程转换 % 特殊微分方程的数值解 % 边值问题的计算机求解 % 偏微分方程的解 % 6.1 微分方程的解析解方法 % y=dsolve(f1, f2, …, fm ,'x') % syms t; u=exp(-5*t)*cos(2*t+1)+5; % uu=5*diff(u,t,2)+4*diff(u,t)+2*u % syms t y; % y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y='... % '87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0') % [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)',... % 'Dy=4*x+3*y+4*exp(-t)') % syms t x; % x=dsolve('Dx=x*(1-x^2)+1') % Warning: Explicit solution could not be found; implicit solution returned. % > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292 % x = % t-Int(1/(a-a^3+1),a=``..x)+C1=0 % 故只有部分非线性微分方程有解析解。 % 6.2 微分方程问题的数值解法 % 6.2.1 微方程问题算法概述 %Euler算法% %function [outx,outy]=MyEuler(fun,x0,xt,y0,PointNum) % fun 表示f(x,y); x0,xt:自变量的初值和终值; % y0:函数在x0处的值,其可以为向量形式; % PointNum表示自变量在[x0,xt]上取的点数 % if nargin<5 |PointNum<=0 %PointNum 默认值为100 % PointNum=100; % end % if nargin<4 % y0默认值为0 Matlab 习题及复习要点 1. Matlab 的英文组成;程序和变量的命名规则; 在MATLAB 语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab 中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp ”目录中有脚本文件abc.m ,若要能在命令窗口输入abc 执行则..); 3.熟悉Matlab 中的几种数据类型(int8、double 、logical 等); 4.在MATLAB 中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye 、zeros 等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break 、continue 等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII 码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 8. 在MATLAB 中求解线性方程组=Ax b 可采用什么指令; 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end 和swich…case 结构的语法,要准确。 12. 会编写分段函数的程序; x 和y 满足如下关系: 221211212x x y x x x x ?=-≤≤??->? 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on 、plot 、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]= meshgrid(x,y); 这里meshgrid (x ,y )的作用是分别产生以向量x 为行,向量y 为列的两个大小相同的矩阵,其中x 的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X ;同理y 的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y 。即 X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 实验六 高层绘图操作 %第一题: 程序代码如下: x=linspace(0,2*pi,101); y=(0.5+3*sin(x)./(1+x.^2)).*cos(x); plot(x,y) 01234567 -1 -0.5 0.5 1 1.5 %第二题: %(1) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; plot(x,y1,'b-',x,y2,'r:',x,y3,'y--'); text(4,16,'\leftarrow y1=x^2'); text(6*pi/4,-1,'\downarrow y2=cos(2*x)'); text(-1.5*pi,-2.25*pi*pi,'\uparrow y3=y1*y2'); -8 -6 -4 -2 2 4 6 8 -30-20 -10 10 20 30 40 %(2) 程序代码如下: x=linspace(-2*pi,2*pi,100); y1=x.^2; y2=cos(2*x); y3=y1.*y2; subplot(1,3,1);%分区 plot(x,y1); title('y1=x^2');%设置标题 subplot(1,3,2); plot(x,y2); title('y2=cos(2*x)'); subplot(1,3,3); plot(x,y3); title('y3=x^2*cos(2*x)'); -10 10 0510 15202530 35 40y1=x 2 -10 10 -1-0.8 -0.6 -0.4-0.200.20.4 0.6 0.8 1y2=cos(2*x) -10 10 -30-20 -10 10 20 30 40 y3=x 2*cos(2*x) %(3) 程序代码如下: x=linspace(-2*pi,2*pi,20); y1=x.^2; subplot(2,2,1);%分区 bar(x,y1); title('y1=x^2的条形图');%设置标题 subplot(2,2,2); stairs(x,y1); title('y1=x^2的阶梯图'); subplot(2,2,3); stem(x,y1); title('y1=x^2的杆图'); subplot(2,2,4); fill(x,y1,'r');%如果少了'r'则会出错 title('y1=x^2的填充图'); %其他的函数照样做。 大学社区网收集整理https://www.doczj.com/doc/799231332.html, 评分 日期湖南商学院北津学院实验报告 课程名称MATLAB科学计算编程语言 实验名称MATLAB程序设计 专业班级信科1121班 姓名xxx 学号xxx 实验日期2012年11月5日 2012—2013学年度第一学期 一、实验目的 1.掌握利用if语句、switch语句实现选择结构的方法。 2.掌握利用for语句、while语句实现循环结构的方法。 3.熟悉利用向量运算来代替循环操作的方法并理解MATLAB程序设计的特点 4.掌握定义和调用MATLAB函数的方法。 二、实验环境 系统windows7旗舰版 处理器Intel(R)Core(TM)i7-3610M CPU @ 2.30GHz 安装内存 4.00GB (3.07GB 可用)系统类型64位操作系统运行环境 MATLAB 5.3 三、实验基本原理 利用上课所学知识解决以下问题: 1.从键盘输入一个3位数的整数,将它反向输出。如输入639,输出936。 2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if 语句和switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。3.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。 4.23.0ln )3.0sin(23.03.0a a e e y a a +++?=?,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、 3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。 5.当n 分别取100、1000、10000时,求下列各式的值: (1)) 6...(n 1...31211122222π=+++++(2)) 2...()12)(12()2)(2(...756653443122π =??? ?????+?????????××????????××????????××n n n n 要求分别用循环结构和向量运算(使用sum 函数)来实现。 6.建立5×6矩阵,要求输出矩阵第n 行元素。当n 值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。 7已知,o999 ) 20()30()40(f f f y += (1)当)5ln(10)(2 ++=n n n f 时,y 的值是多小。 (2)当+×+×+×=433221)(n f …+)1(+×n n 时,y 的值是多小。 8.先用函数的递归调用定义一个函数文件求 ∑=n i m i 1,然后调用该函数文件求 MATLAB 语言程序设计 1、应用题(20 分) 某工厂生产A和B两种产品,它们需要经过三种设备的加工,工时如表1所列。设备一、二、三每天可使用的时间分别不超过12、10和8小时。产品A和B的利润随市场的需求有所波动,如果预测未来某个时期内A和B的利润分别为4000元/吨和3000元/吨,问每天应安排产品A、B各多少吨,才能使工厂获利最大? 表 1 生产产品工时表 产品设备一设备二设备三 A/(小时/吨) 3 3 4 B/(小时/吨) 4 3 2 设备每天最多可工作时数/小时12 10 8 请写出具体解决方案,并编写该解决方案的具体MATLAB程序代码。 假设每天应安排生产产品A和B分别为和吨,依题意可建数学模型如下: max z=4000x 1+ 3000x2 3x1+ 4x2≤12 3x1+ 3x2≤10 4x1+ 2x2≤8 x1≥0, x2≥0 首先将目标函数转换为标准形式:min z=-4000-3000 M文件如下: f = [-4000;-3000]; A = [3 4;3 3;4 2]; b = [12;10;8]; lb = zeros(2,1); [x,fval] = linprog(f,A,b,[],[],lb) 结果如下图1所示: 图1 2、结合MATLAB 图像的读写知识,请你写出具体MATLAB 图像读写方法,结合实例,给出图像读写步骤。(20分) 读写方法: imfinfo(FileNAme) %从FileNAme中获取或显示图像文件的特征数据 [X,cmap]=imread(FileNAme) %读取变址图像的数据矩阵与伴随色图,并分别送给X 和cmap X=imread(FileNAme) %从FileNAme中读取强度图像或真彩图像的数据矩阵并送给X imwrite(X,cmap,FileName,Parameter,Value) %将变址图像写入文件 imwrite(X ,FileName,Parameter,Value)%将强度图像或真彩图像写入文件 [例2-1] M文件如下: I=imread('m2.png'); imwrite(I,'m2.tif'); [X,cmap]=imread('m2.tif'); image(X); colormap(cmap); axis image off; 结果如下图2所示: 图2 3、结合课本第四章所提供的18种绘图方法,请实现其中8种绘图,提供程序代码及所绘制的图形。(30分) 1,编写M 函数实现求一个数是否为素数,再编写一主程序(脚本文件),要求通过键盘输入一个整数,然后调用判断素数函数,从而确定它是否素数。 x=input('请输入一个整数x:'); if myprime(x) disp('您输入的整数x是一个素数。') else disp('您输入的数x不是一个素数。') end function y=myprime(x) y=1; for i=2:fix(sqrt(x)) if mod(x,i)==0 y=0; end end 2,编写M 函数统计一数值中零的个数,然后编写脚本文件,实现统计从1—2007 中零的总个数。 function num=number0(a) %统计十进制数值中0的个数 sa=num2str(a);%将数值装化为字符串 num=length(find(sa=='0'));% ));%求取字符串中'0’的个数 y=0; for a=1:2006 num=number0(a); y=num+y; end disp(y) 504 3,编写程序计算x∈[-3,3],字长0.01:并画出曲线x = -3:0.01:3; y=zeros(size(x)); for i = 1:length(x) if -3<= x(i)& x(i)<=-1 y(i)=(-x(i).^2-4*x(i)-3)/ 2; elseif -1<= x(i) & x(i)<=1 y(i)=-x(i).^2+1; elseif 1<=x(:,i)<=3 y(i)=(-x(i).^2+4*x(i)-3)/2; end end plot(x,y) -3-2-10123 Matlab 上机实验一、二 3.求下列联立方程的解???????=+-+-=-+=++-=--+4 1025695842475412743w z y x w z x w z y x w z y x >> a=[3 4 -7 -12;5 -7 4 2;1 0 8 -5;-6 5 -2 10]; >> b=[4;4;9;4]; >> c=a\b 4.设???? ??????------=81272956313841A ,??????????-----=793183262345B ,求C1=A*B’;C2=A’*B;C3=A.*B,并求上述所有方阵的逆阵。 >> A=[1 4 8 13;-3 6 -5 -9;2 -7 -12 -8]; >> B=[5 4 3 -2;6 -2 3 -8;-1 3 -9 7]; >> C1=A*B' >> C2=A'*B >> C3=A.*B >> inv(C1) >> inv(C2) >> inv(C3) 5.设 ?? ????++=)1(sin 35.0cos 2x x x y ,把x=0~2π间分为101点,画出以x 为横坐标,y 为纵坐标的曲线。 >> x=linspace(0,2*pi,101); >> y=cos(x)*(0.5+(1+x.^2)\3*sin(x)); >> plot(x,y,'r') 6.产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。并求该矩阵全体数的平均值和均方差。 (mean var ) a=randn(8,6) mean(a) var(a) k=mean(a) k1=mean(k) i=ones(8,6) i1=i*k1 i2=a-i1 i3=i2.*i2 g=mean(i3) g2=mean(g) Matlab习题及复习要点 1.Matlab的英文组成;程序和变量的命名规则; 在MATLAB语言中是区分字母大小的,也就是说,大写字母和小写字母代表的东西是不同的。 2.Matlab中注释、关键词等的显示颜色;如何设置当前路径、如何设置搜索路径(例如第一次上机练习过的,新建的“D:\temp”目录中有脚本文件abc.m,若要能在命令窗口输入abc执行则..); 3.熟悉Matlab中的几种数据类型(int8、double、logical等); 4.在MATLAB中计算数学公式(如三角函数、对数、开根号等)的表达; 5.掌握数组的几个操作(裁剪、扩增、eye、zeros等)、对角阵指令、均匀分布随即向量指令;数组中行和列的分隔符; 6. 在循环结构中的几个命令:break、continue等; 7. 已知字符'A'、'Z'、'a'、'z'的ASCII码分别为65、90、97、122,str1为全为大写字母的字符串,采用什么命令可将该字符串转换成小写。 Ax b可采用什么指令; 8. 在MATLAB中求解线性方程组 9. 掌握基本运算符,例如*、.*、/、./、^、.^ 的区别 10.读懂逻辑表达式,会写出逻辑表达式的结果(0或1) 11. 掌握集中循环结构,尤其if..elseif…else…end和swich…case结构的语法,要准确。 12. 会编写分段函数的程序; x和y满足如下关系: 编写函数y=f(x),用于计算上述分段函数。 13. 绘图时采用的几个命令的掌握:hold on、plot、plot3 14*.用语句[x, y]=meshgrid(a:b)构建网格数据,例子如下: 示例一: x=-3:1:3;y=-2:1:2; [X,Y]=?meshgrid(x,y); 这里meshgrid(x,y)的作用是分别产生以向量x为行,向量y为列的两个大小相同的矩阵,其中x的行是从-3开始到3,每间隔1记下一个数据,并把这些数据集成矩阵X;同理y的列则是从-2到2,每间隔1记下一个数据,并集成矩阵Y。即X= -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 -3 -2 -1 0 1 2 3 Y = -2 -2 -2 -2 -2 -2 -2 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 matlab程序设计与应用第二版习题答案【篇一:matlab程序设计与应用(第二版)实验答案】 %实验一 matlab运算基础 %第1题 %(1) z1=2*sin(85*pi/180)/(1+exp(2)) %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2)) %(3) a=-3.0:0.1:3.0; z3=(exp(0.3*a)-exp(-0.3*a))/2.*sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t=0t1)+(t.^2-1).*(t=1t2)+(t.^2-2*t+1).*(t=2t3) %第2题 a=[12 34 -4;34 7 87;3 65 7]; b=[1 3 -1;2 0 3;3 -2 7]; a+6*b a-b+eye(size(a)) a*b a.*b a^3 a.^3 a/b b\a [a,b] [a([1,3],:);b^2] %第3题 a=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25] b=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] c=a*b f=size(c) d=c(f(1)-2:f(1),f(2)-1:f(2)) whos %第4题 %(1): a=100:999; b=rem(a,21); c=length(find(b==0)) %(2): a=lsdhksdlkklsdkl; k=find(a=aa=z); a(k)=[] %实验二 matlab矩阵分析与处理 %第1题 e=eye(3); r=rand(3,2); o=zeros(2,3); s=diag([2,3]); a=[e,r;o,s]; a^2 b=[e,(r+r*s);o,s^2] %第2题 h=hilb(5) p=pascal(5) hh=det(h) hp=det(p) th=cond(h) tp=cond(p) %第3题 a=fix(10*rand(5)) h=det(a) trace=trace(a) rank=rank(a) norm=norm(a) %第4题 a=[-29,6,18;20,5,12;-8,8,5] [v,d]=eig(a) %数学意义略 %第5题方法一 %(1): a=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,1/6]; b=[0.95,0.67,0.52]; x=inv(a)*b %(2): 安徽农业大学2006―2007学年第二学期 《MATLAB 语言程序设计》试卷(A 卷) 考试形式: 闭卷笔试,2小时 适用专业: 05级通信工程、电子信息工程 一、填空题(本题满分30分,每空3分) 1. 设有程序 A=[1,2,3,4;4,3,2,1;1, -2 ,1, -2];B=[3,1,-1;0,4,2];A1=A(:,[1 3]); M=size(A1)+ length(B(:,2)) 将下列命令的运行结果填在横线上 M= ;A1+B' = . 2. A=[1,2,3,4;2,3,4,5;3,4,5,6]; A1=sum(A<4,2);A([2,3],:)=[],A2=A A1= ; A2= ; 3.P=[1,2,3,4;3,0,1,2];max(P)= ;mean(P,2)= 院: 专业班级: 姓名: 学号: 装 订 线 二、(本题满分12分)试编写计算程序 V; 与特征向量 U 的特征值 B 2 A 求 (4). E; 5 B A 2B BX 解矩阵 . (3) ); A B) (B(A R R 的秩 A (2). |; B) 2 B)(A (A | D (1). , 6 2 1 5 7 2 , 2 1 5 1 2 3 3 2 1 1 1 + + = + = + - = ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? = - - T T T B A 方程 设 三、(本题满分8分) 的程序组写出求解超定线性方程?????? ?=++-=++=--=++1 21212:321 321321 321x x x x x x x x x x x x 四、(本题满分16分)运用符号运算功能写出下列各题Matlab 程序 解求方程03.12=-x e x Adx dx A d x wx x x xe A x ??? ????=-1 022,,cos )sin(sin .2并计算 生成符号矩阵 MATLAB 程序设计实验报告 一、实验目的 1. 通过实验熟悉MATLAB 仿真软件的使用方法; 2. 掌握用MATLAB 对连续信号时域分析、频域分析和s 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 3. 掌握用MATLAB 对离散信号时域分析、频域分析和z 域分析的方法,利用绘图命令绘制出典型信号的波形,了解这些信号的基本特征; 4. 通过绘制信号运算结果的波形,了解这些信号运算对信号所起的作用。 二、实验设备 1. 计算机 : 2. MATLAB R2007a 仿真软件 三、实验原理 对系统的时域分析 信号的时域运算包括信号的相加、相乘,信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。 (1)信号的相加和相乘:已知信号)(1t f 和)(2t f ,信号相加和相乘记为 )()(1t f t f =)(2t f +;)()(1 t f t f =)(2t f *。 (2)信号的微分和积分:对于连续时间信号,其微分运算是用diff 函数来完成的,其语句格式为:diff(function,’variable’,n),其中function 表示需要进行求导运算的信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;n 为求导的阶数,默认值为求一阶导数。连续信号的积分运算用int 函数来完成,语句格式为:diff(function,’variable’,a,b),其中function 表示需要进行被积信号,或者被赋值的符号表达式;variable 为求导运算的独立变量;a,b 为积分上、下限,a 和b 省略时为求不定积分。 (3)信号的平移、翻转和尺度变换 信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号)(t f 的面积和能量。信号的尺度变换是对信号)(t f 在时间轴上的变化,可使信号压缩或扩展。)(at f 将原波形压缩a 倍,)/(a t f 将原波形扩大a 倍。 ¥ 对系统频率特性的分析 练习4 MATLAB 程序设计 一、目的和要求 (1)掌握MAM 的程序流程控制结构。 (2)掌握M 文件的结构。 (3)掌握函数调用和参数传递。 (4)了解程序性能剖析窗口。 (5)掌握利用函数句柄进行数值分析。 二、内容和步骤 MATLAB 的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB 也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。 1.使用程序流程控制 Fibonacci 数列的各元素为:1,1,2,3,5,8,…,满足以下关系: 2 1211 1--+===n n n F F F F F 用M 函数文件实现,数列的元素个数为输入变量。 (l )按M 函数文件格式创建文件开头。 function f=shiyan0501(n) %SHIYAN0501 Fibonacci % Fibonacci 数列 % n 元素个数 % f 构成Fibonacci 数列向量 (2)用While 循环实现程序功能。 f(1)=1;f(2)=1;i=2; while i<=n f(i+1)=f(i-1)+f(i); i =i+1; end 在命令窗口输入调用命令调用函数,元素个数n=10, 结果:( ) (3)使用for 循环实现,重新编制上述函数。 结果:( ) (4)当Fibonacci 数列中某个元素大于50时,用“break ”命令退出循环结构,修改程序如下: 结果:( ) (5)将该.m 文件生成P 码文件: >>pcode shiyan0501 将 shiyan0501.m 删除,重新调用函数文件,执行结果如下: 结果:( ) 2.使用函数调用 计算 2 5 21 22 2432(2)!arcsin ,143 1645 2 (!)(21) n n x x n x x x x n n +???≈+ + ++ ??+ 其中。 x 为输人参数,当x 不满足条件时就不计算,并显示提示;当12+n x 前的系数<0.00001时,则循环结束。 使用主函数和子函数调用来实现各项系数的运算,主函数计算各项和;子函数cal 计算系数 ) 12(1 )!(2 )!2(2 2+n n n n ;子函数 factorial 求阶乘n !。主函数调用子函数cal ,子函数cal 再调用子函数 factorial ,本程序是函数的嵌套调用。 (1)子函数 factorial 计算n !,输入参数为 n ,使用 for 循环实现阶乘,输出参数为阶乘。 (2)子函数cal 计算系数) 12(1 )!(2 )!2(2 2+n n n n ,输入参数是n ,输出参数是计算结果。 function f=cal(n) f=factorial(2*n)/(2^(2*n)*(factorial(n))^2*(2*n+1)); 本函数中调用了求阶乘的子函数factorial 。 练习:用for 、while 分别编写factorial 子函数。 结果:( 第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E f=input('输入一个数:','s'); f(end :-1:1) 2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y)MATLAB程序设计教程(第二版)课后答案(可编辑修改word版)
实验二 Matlab程序设计基本方法1
matlab编程训练
《MATLAB程序设计与应用(刘卫国)》(第二版) 答案
MATLAB程序设计教程课后答案
MATLAB 语言程序设计基础(2)
《MATLAB程序设计》复习资料
刘卫国版MATLAB程序设计与应用课后实验六八九
MATLAB程序设计教程(第二版)第三章实验报告下载
Matlab语言程序设计
实验3MATLAB程序设计
Matlab编程与应用习题和一些参考答案
《MATLAB程序设计》复习
matlab程序设计与应用第二版习题答案
05级通信工程、电子信息工程《MATLAB语言程序设计》考试卷
MATLAB程序设计实验报告
练习3 MATLAB程序设计
Matlab程序设计教程(第二版)刘卫国课后参考答案解析