计算机仿真课程实验指导2012秋季

发布时间: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

计算机仿真课程实验指导2012秋季.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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