计算机仿真课程实验指导2012秋季
发布时间:2024-11-28
发布时间:2024-11-28
计算机仿真课程实验指导 供生物医学工程专业本科生使用
计算机仿真 课程实验指导
河北工业大学电气工程学院
生物医学工程专业 2011年秋季学期
实验项目一:实验项目二:实验项目三:动态电路的仿真实验项目四:模拟电路的仿真实验项目五:组合逻辑电路仿真实验项目六:信源编码和量化计算机仿真课程实验指导 供生物医学工程专业本科生使用
目 录
MATLAB数值计算 ..................................................... 3 MATLAB数据的可视化 ........................................... 12 ........................................................ 21 ........................................................ 26 .................................................... 32 ........................................................ 38
班级: 生医C103 学号: 106201 姓名: 朱海军
实验项目一:MATLAB数值计算
实验的目的和任务:学习使用MATLAB常用命令进行数组和矩阵等数值计算 实验内容:
1.要求在闭区间[0,2 ]上产生具有10个等距采样点的一维数组。试用两种不同的指令实
现。(参考提示:用冒号或linspace命令) linspace(0,2*pi,10) ans =
0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832 a=0:2*pi/9:2*pi a =
0 0.6981 1.3963 2.0944 2.7925 3.4907 4.1888 4.8869 5.5851 6.2832 2.已知矩阵A
12
,运行指令B1=A.^(0.5), B2=A^(0.5), 可以观察到不同运算方法所 34
得结果不同。
(1)请分别写出根据B1, B2恢复原矩阵A的程序。 A=[1 2;3 4] B1=A.^(0.5) B2=A^(0.5) A1=B1.^2 A2=B2^2 >> A=[1 2;3 4]
A =
1 2 3 4 B1 =
1.0000 1.4142 1.7321 2.0000 B2 =
0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i A1 =
1.0000 2.0000 3.0000 4.0000 A2 =
1.0000 + 0.0000i 2.0000 + 0.0000i 3.0000 - 0.0000i 4.0000 + 0.0000i
(2)用指令检验所得的两个恢复矩阵是否相等。 >> isequal(A1,A2) ans = 0
3.先运行clear,format long,rand('state',1),A=rand(3,3),然后根据A写出两个矩阵:一个对角
阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同。 clear,format long,rand('state',1),A=rand(3,3) A =
0.95278214965662 0.59815852417219 0.83681960067634 0.70406216677500 0.84074319811307 0.51870305972492 0.95387747359223 0.44281884223513 0.02220977857260 命令为:
b=diag(A); B=diag(b) C=A-B
clear,format long,rand('state',1),A=rand(3,3) A =
0.95278214965662 0.59815852417219 0.83681960067634 0.70406216677500 0.84074319811307 0.51870305972492 0.95387747359223 0.44281884223513 0.02220977857260 >> b=diag(A) b =
0.95278214965662 0.84074319811307 0.02220977857260 >> B=diag(b) B =
0.95278214965662 0 0 0 0.84074319811307 0 0 0 0.02220977857260 >> C=A-B C =
0 0.59815852417219 0.83681960067634 0.70406216677500 0 0.51870305972492 0.95387747359223 0.44281884223513 0
1k 1 9k 1 2k 2 9k 2
,4.下面有一段程序,企图用来解决如下计算任务:有矩阵Ak
k2k 10k
当k依次取10, 9, 8, 7, 6, 5, 4, 3, 2, 1时,计算矩阵Ak“各列元素的和”,并把此求和结
14 28 果存放为矩阵Sa的第k行。例如k 3时,A阵为25 29,此时它各列元素 36 30
的和是一个(1 10)行数组 615 87 ,并把它保存为Sa的第3行。问题:该段程序的计算结果对吗?假如计算结果不正确,请指出错误发生的根源,并改正之。
原程序为: for k=10:-1:1 end Sa;
修改源程序:
5.由指令rand('state',0),A=rand(4,6)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。(请参考find指令的用法,利用help find,注:命令('state',0) 为resets the generator to its initial state. 重新恢复初始状态,刚运行matlab时候的状态,更详细的rand 用法请参考help rand) rand('state',0),A=rand(4,6) A =
Columns 1 through 4
0.95012928514718 0.89129896614890 0.82140716429525 0.92181297074480 0.23113851357429 0.76209683302739 0.44470336435319 0.73820724581067 0.60684258354179 0.45646766516834 0.61543234810009 0.17626614449462 0.48598246870930 0.01850364324822 0.79193703742704 0.40570621306210 Columns 5 through 6
0.93546969910761 0.05789130478427 0.91690443991341 0.35286813221700 0.41027020699095 0.81316649730376 0.89364953091353 0.00986130066092
A=reshape(1:10*k,k,10); Sa(k,:)=sum(A);
>> a=find(A>0.5) a = 1 3 5 6 9 11 12 13 14 17 18 20
23
[i,j]=find(A>0.5) i = 1 3 1 2 1 3 4 1 2 1 2 4
计算机仿真课程实验指导 供生物医学工程专业本科生使用
3 j = 1 1 2 2 3 3 3 4 4 5 5 5 6
6.求解一元七次方程1.25x7+5.66x6+0.71x4+0.68x3+6.21x+5015=0的根。(使用root指令) 命令为:
>> a=[1.25 5.66 0 0.71 0.68 0 6.21 5015]; >> roots(a) ans =
-4.85272979161717 -2.64205763581906 + 2.05906361771933i -2.64205763581906 - 2.05906361771933i 0.27814068568430 + 2.97846881377047i 0.27814068568430 - 2.97846881377047i 2.52628184594335 + 1.36088666536616i 2.52628184594335 - 1.36088666536616i
7.运行如下指令:(请参考例2.1-3) syms a b x X Y k=sym('3');
z=sym('c*sqrt(delta)+y*sin(thet)') EXPR=a*z*X+(b*x^2+k)*Y
在表达式EXPR中,确定1个、2个和3个自由符号变量的命令分别为: syms a b x X Y k=sym('3');
z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; f1=findsym(EXPR,1) f1=findsym(EXPR,2) f1=findsym(EXPR,3) f1 = x f1 = x,y f1 = x,y,theta
找出EXPR中的全部的自由符号变量的命令为: syms a b x X Y k=sym('3');
z=sym('c*sqrt(delta)+y*sin(theta)'); EXPR=a*z*X+(b*x^2+k)*Y; f=findsym(EXPR) f =
X, Y, a, b, c, delta, theta, x, y
8.请编写MATLAB指令,化简f 1612
(请参考例2.2-2) 2 8。
xsyms x f
f=(1/x+6/(x^2)+12/x+8)^(1/3) simple(f) f =
(13/x+6/x^2+8)^(1/3) simplify:
((13*x+6+8*x^2)/x^2)^(1/3) radsimp:
(13*x+6+8*x^2)^(1/3)/x^(2/3) combine(trig):
((13*x+6+8*x^2)/x^2)^(1/3) factor:
((13*x+6+8*x^2)/x^2)^(1/3) expand:
(13/x+6/x^2+8)^(1/3) combine:
(13/x+6/x^2+8)^(1/3) convert(exp): (13/x+6/x^2+8)^(1/3) convert(sincos): (13/x+6/x^2+8)^(1/3) convert(tan): (13/x+6/x^2+8)^(1/3) collect(x):
(13/x+6/x^2+8)^(1/3) ans =
(13/x+6/x^2+8)^(1/3)
xx
9.请编写MATLAB指令求lim(1
x
1kx)。(请参考例2.3-1) x
>> syms k x f=(1-(1/x))^(k*x); a=limit(f,inf) a = exp(-k)
10. 请编写MATLAB指令求
clear syms x
f=sqrt((1+x)/x)/x s=int(f,x)
s=simple(simple(s)) f=
((1+x)/x)^(1/2)/x s=
((1+x)/x)^(1/2)/x*(-2*(x^2+x)^(3/2)+2*(x^2+x)^(1/2)*x^2+log(1/2+x+(x^2+x)^(1/2))*x^2)/((1+x)*x)^(1/2) s=
log(1/2+x+((1+x)*x^(1/2))-2*((1+x)^(1/2)/x
1 x
(请参考例2.3-9) xxdx。
实验项目二:MATLAB数据的可视化
实验的目的和任务:利用MATLAB常用命令进行符号计算和绘图,练习二维图形和
三维图形的绘制、符号计算
实验要求:
1、根据题目要求,写出相应的MATLAB程序,结果;
2、给出仿真程序的,要求给出程序说明文字;要求根据现有程序,进行适当的修改,并给出仿真结果
实验内容:
1.三维曲线绘图。本例演示:三维曲线的参数方程;线型、点形和图例。
t=(0:0.02:2)*pi;
x=sin(t);y=cos(t);z=cos(2*t); %三维曲线的参数方程 plot3(x,y,z,'b-',x,y,z,'bd') view([-82,58]),box on
xlabel('x'),ylabel('y'),zlabel('z') legend('链','宝石')
1
1
0.50-0.5-1
y
x
-1
z
2. 用曲面图表现函数z x2 y2。 clf
x=-4:4;y=x; %确定自变量的取值范围和采样间隔 [X,Y]=meshgrid(x,y); %生成x-y平面上的自变量“格点”矩阵 Z=X.^2+Y.^2; %计算格点上的函数值 surf(X,Y,Z); %绘制曲面图 colormap(hot) %采用hot色图 hold on
stem3(X,Y,Z,'bo') %用来表现x-y平面格点,及对应的函数值 hold off
xlabel('x'), ylabel('y'), zlabel('z')
axis([-5,5,-5,5,0,inf]) %设置坐标范围 view([-84,21]) %控制视角
302520
z
151050y
-5
x5
3. 三种浓淡处理方式比较。
clf %清空图形窗 x=-4:4;y=x;
[X,Y]=meshgrid(x,y); Z=X.^2+Y.^2; surf(X,Y,Z) colormap(jet)
subplot(1,3,1),surf(Z),axis off
subplot(1,3,2),surf(Z),axis off,shading flat subplot(1,3,3),surf(Z),axis off,shading interp
set(gcf,'Color','w') %设置图形窗的底色为白
4. 灯光、照明、材质指令所表现的图形。
clf;
[X,Y,Z]=sphere(40);
colormap(jet) %蓝头红尾饱和色值的色图
subplot(1,2,1),surf(X,Y,Z),axis equal off,shading interp %浓淡处理认差值方式 light ('position',[0 -10 1.5],'style','infinite') lighting phong material shiny
%对顶点处法线差值,在计算各参数的反光
subplot(1,2,2),surf(X,Y,Z,-Z),axis equal off,shading flat light;lighting flat
%light指令可规定多个灯光照射
light('position',[-1,-1,-2],'color','y')
light('position',[-1,0.5,1],'style','local','color','w') set(gcf,'Color','w')
%设置图形窗的底色为白
5. 演示:如何利用“非数”NaN,对图形进行镂空处理。
P=peaks(30); %从MATLAB提供的双变量正态分布曲面获取数据 P(18:20,9:15)=NaN; surfc(P);
%为镂空而赋值 %带等位线的曲面图
colormap(hot)
light('position',[50,-10,5])
material([0.9,0.9,0.6,15,0.4]) %控制光反射的材质 grid off,box on
上一篇:病理学重点及名词解释
下一篇:山东省建筑工程消耗量补充定额