北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc

北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc
北京理工大学信号与系统实验报告材料3信号的频域分析报告.doc

标准

实验 3 信号的频域分析

(综合型实验)

一、实验目的

1)深入理解信号频谱的概念,掌握信号的频域分析方法。 2)观察典型周期信号和非周期信号的频谱,掌握其频谱特性。 二、实验原理与方法 1.连续周期信号的频谱分析

如果周期信号满足

Dirichlet 条件,就可展开为傅里叶级数的形式,即

x(t)

c k e jk 0 t ( 1)

c k 1

x(t)e

jk 0t

dt

2)

k

T 0 T

其中 T 0 表示基波周期,

2

/ T 0 为基波频率,

(...) 表示任一个基波周期内的积分。

T 0

上面两式为周期信号复指数形式的傅里叶级数,系数 c k 成为 x(t)的傅里叶系数。周期信

号的傅里叶级数还可由三角函数的线性组合来表示,即

x(t) a 0

a k cosk

t

b k sin k

0t

(3)

k 1

k 1

其中 a 0

1

2 x(t)cosk

0tdt ,b k 2

x(t)sink 0tdt (4)

x(t)dt, a k

T

0 T

T 0 T

T

0 T

( 3)式中同频率的正弦、余弦项合并可以得到三角函数形式的傅里叶级数,即

x(t) A 0

A k cos(k

0 t

k )

( 5)

k 1

其中 A 0

a 0 , A k a k 2

b k 2

, k

arctan b k

(6)

a k

任何满足 Dirichlet 条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数 的叠加。 周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号, 但在实际应用中

常采用有限项级数代替,所选级数项越多就越接近原信号。

2.连续非周期信号的频谱分析

对于非周期连续时间信号,信号的傅里叶变换和傅里叶逆变换定义为

X ( )x(t)e j t dt (7)

x(t)

1 X ( )e j t d

( 8)

2

以上两式把信号的时频特性联系起来,

确立了非周期信号 x(t) 和频谱 X ( ) 之间的关系。

利用 MATLAB 可以方便地求出非周期连续时间信号的傅里叶变换,几种常见方法如下: 1)

符号运算法

MATLAB 的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier 函数和 ifourier 函数,基本调用格式为

X fourier (x)x ifourier (X)

默认的时域变量为t,频域变量为。

例:求 x(t) e 2|t|的傅里叶变换,代码及运行结果如下:

>>syms t

>>x=exp(-2*abs(t));

>>X=fourier(x)

X =

4/(w^2 + 4)

所以傅里叶变换结果为 X ( )

4 4 2

也可利用 int 函数直接根据式(7)求傅里叶变换。

2)数值积分法

除了采用符号运算的方法外,还可以采用 MATLAB的 quad 函数,采用数值积分的

方法来进行连续信号的频谱分析。quad 函数是一个用来计算数值积分的函数。利

用 quad 函数可以计算非周期连续时间信号的频谱。Quad 函数的一般调用格式为:

y=quad(fun,a,b)

y=quad(fun,a,b,TOL,TRACE,p1,p2,...)

其中 fun 指定被积函数,可以用 inline 命令来创建,也可通过传递函数句柄的形式

来指定, a、b 表示定积分的上下限,TOL表示允许的相对或绝对积分误差,TRACE 表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL 和 TRACE为空矩阵,则使用缺省值,“ p1, p2, ...”表示被积函数除时间t 之外所需的其他额外输

入参数。

3)数值近似法

还可以利用 MATLAB 的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变

换 X ( ) 可以由(9)式近似计算

X ( ) x(t)e j t dt limx(k )e j k ( 9)

0 k

当 x(t)为时限信号,且足够小,则(9 )可以演变成

b

) e jk

X ( ) x(k (10)

k a

(10)中求和部分又可以表示成一个行向量和一个列向量的乘积

e b

e x(k )e jk [x( a ), x((a 1) ),..., x(b )]

k a

...

e 上式可以很方便地利用MATLAB实现。

3.离散周期信号的分频域分析ja

j ( a 1)

( 11)jb

基波周期为N 的周期序列x(n) 可以用N个成谐波关系的复指数序列的加权和表示,即

x(n) c k e jk (2 /N)n ( 12)

k N

这里 k=表示求和仅需包括一个周期内的N 项,周期序列在一个周期内的求和与起点

无关。将周期序列表示成式(12)的形式,称为离散傅里叶级数,而系数c k则称为傅里叶系数。离散傅里叶系数c k可由(13)式确定。

c k 1 x(n)e jk (2 / N)n ( 13)

N k N

傅里叶系数c k也称为 x(n) 的频谱系数,而且可以证明 c k是以N为周期的离散频率序列。

这说明了周期的离散时间函数对应于频域为周期的离散频率。

这里,我们用周期N 与傅里叶系数c k的乘积来表示周期离散时间信号的频谱,即

X (k) N c k x(n) e jk (2 /N)n ( 14)

k N

X(k)可以利用MATLAB提供的函数fft 用来计算,调用格式为

X=fft(x)

该函数返回X(k)一个周期内的值,其中x 表示 x(n)一个周期内的样本值。

4.离散非周期信号的频域分析

非周期序列x(n)可以表示成一组复指数序列的连续和

x(n) 1 X (e j )e j n d ( 15)其中 X (e j ) x(n) e j n ( 16)

2 2 n

式( 16)成为 x(n)的离散时间傅里叶变换,式(15)和( 16)确立了非周期离散时间信号 x(n)及其离散时间傅里叶变换X (e j ) 之间的变换。X (e j ) 是连续频率的函数,称为频谱函数,且X (e j ) 是周期的连续频率函数,其周期为 2 。可见,非周期离散时间函数

对应于频域中是一个连续的周期频率函数。

对于有限长的离散时间序列,( 16)可以表示为

e

n N

e

X (e j )

x(n)e j n

[x(n 1 ), x(n 2 ),..., x(n N )] n n 1

... e jn 1 jn 2

(17)

jn N

上式可以方便地利用

MATLAB 实现。

三、实验内容

(1)已知 x(t)是如下图所示的周期矩形脉冲信号。

x(t)

A ...

...

-T

-c/2

c/2

T

1)计算该信号的傅里叶级数;

a 0

A , a k 2A

sin(k

) , b k 0

T

k

T

得傅里叶级数为:

x(t)

A 2 A

sin(k)

cos(

2

kt )

T

k

T

k 1

T

2)利用 MATLAB 绘出由前 N 次谐波合成的信号波形,观察随着 N 的变化合成信号波形的变

化规律;

用 MATLAB 编写代码如下:

N=input( 'N=' ); A=input( 'A=' ); c=input( 'c=' ); T=input(

'T=' );

t=-1.5:0.001:1.5; x=A*c*ones(size(t))/T; for n=1:N

x=x+(2*A/(n*pi))*sin(n*pi*c/T)*cos(2*pi*n*t/T); end plot(t,x); xlabel( 'Time(sec)' )

title([

'N='

num2str(n)])

在命令窗口输入以下语句:

>> subplot(221) >> subplot(223) >> DFTthird_2_1 >> DFTthird_2_1 N=5 N=20

A=1 A=1

c=0.5 c=0.5

T=1 T=1

>> subplot(222) >> subplot(224) >> DFTthird_2_1 >> DFTthird_2_1 N=10 N=40

A=1 A=1

c=0.5 c=0.5

T=1 T=1

图形如下:

1.5 N=5

1.5

N=10

1 1 0.5 0.5 0 0

-0.5

-1 0 1 2 -0.5

-1 0 1 2

-2 -2

Time(sec) Time(sec)

1.5 N=20

1.5

N=40

1 1 0.5 0.5 0 0

-0.5

-1 0 1 2 -0.5

-1 0 1 2

-2 -2

Time(sec) Time(sec)

由以上四个图可知,随着N 的增大,合成信号的波形越来越接近原脉冲信号。

3)利用 MATLAB绘出周期矩形脉冲信号的频谱,观察参数 T 和变化时对频谱波形的影响。

可计算出傅里叶系数为:

A, k 0

c k T A

sin(k), k0

k T

画出该信号频谱MATLAB代码如下:

N=input( 'N=' ); c2=(A./(n2*pi)).*sin(n2*pi*c/T);

c=input( 'c=' ); cn=[c1 c0 c2];

A=input( 'A=' ); n=-N:N;

T=input( 'T=' ); subplot(211);

n1=-N:-1; stem(n,abs(cn), 'filled' );

c1=(A./(n1*pi)).*sin(n1*pi*c/T); xlabel( '\omega/\omega_0' );

c0=c*A/T; title( 'Magnitude of ck' );

n2=1:N; subplot(212);

stem(n,angle(cn), 'filled'

); xlabel( '\omega/\omega_0'

);

title(

'Phase of ck'

)

命令窗口:

>> DFTthird_2_2 N=20

c=0.5 A=1 T=4 图形:

Magnitude of ck

0.2

0.15

0.1 0.05

0 -15

-10

-5

0 5

10

15

20

-20

/ 0

Phase of ck

4

3 2 1

0 -15

-10

-5

0 5

10

15

20

-20

/ 0

N=20,A=1,改变 T 和 时的波形变化:

0.08

c=0.5;T=8;c/T=0.0625

0.2

c=0.5;T=4;c/T=0.125

k

k

c

0.06

c

0.15

f

f

o

o

e

e

d 0.04

d 0.1

u

u

t

t

i

i

h h g

g

a

0.02

a

0.05

M

M

0 -10

0 10

20

0 -10

0 10

20

-20

-20

/

/

0.4

c=1;T=4;c/T=0.25

0.4 c=0.5;T=2;c/T=0.25

k

k

c

0.3

c

0.3

f

f

o

o

e

e

d 0.2

d 0.2

u u t

t

i

i

h

h

g

g

a

0.1

a

0.1

M

M

0 -10

0 10

20

0 -10

0 10

20

-20

-20

/

/

综合分析以上四个图像可得: 频谱的波形与占空比

有关,对于 T 或 取不同的值时, 当

T

T

不变,频谱波形不变,当

T 变大,频宽(第一个过零点频率)减小,过零点频率增多,谱

线变得稀疏,各频率分量振幅增大。

标准

观察实验结果,思考如下问题:

1—1. 什么是吉伯斯现象?产生吉伯斯现象的原因是什么?

答:

吉伯斯现象:将具有不连续点的周期函数(如矩形脉冲)进行傅里叶级数展开后选

取有限项进行合成。在不连续点附近,部分和有起伏,其峰值最大值是不连续点处

高度的 1.09 倍。不连续点处级数收敛于左右极限的平均值,t 愈接近不连续点时,为将误差减小至低于某一给定值,N 必须取得很大。随着N 的增大,部分和的起伏就向不连续点处压缩,但是对有限的N 值,起伏的峰值大小不变。

产生吉伯斯现象的原因:当一个信号通过某一系统时,如果这个信号是不连续时间

函数,则因为一般的物理系统对信号的高频分量都有衰减作用,所以产生了吉伯斯

现象。

1—2. 以周期矩形脉冲为例,说明周期信号的频谱有什么特点?

由结果可知:

1. 周期性矩形脉冲信号的频谱是离散的,其频谱仅存在于0 , 2 0 ,3 0 ,... 等离

散值处,谱线间隔距离为固定值0 ,各次谐波的频率均为基频0 的整数倍。

2. 随着谐波次数增高,谱线长度逐渐趋于收敛。

所以离散型、收敛性以及谐波性是周期信号的共同特点。

1—3. 周期矩形脉冲信号的有效频带宽度与信号的时域宽度之间有什么关系?

答:

根据 B 2 /T(B 为有效频宽, T 为脉冲的时域宽度),有效频带宽度与信号的时域宽度成反比。

1—4. 随着矩形脉冲信号参数/ T 的变化,其频谱结构(如频谱包络形状、过零点、谱线间隔等)如何变化?

答:

随着的变换,频谱包络形状不变。

T 增大时,过零点增多,谱线间隔逐渐变大。

T

(2)已知 x(t)是如下图所示的矩形脉冲信号。

x(t)

A

-c/2c/2

1)求该信号的傅里叶变换;

>> syms t c A

>> x=A*[heaviside(t+c/2)-heaviside(t-c/2)]; ans =

>> X=fourier(x);

>> collect(X) (2*A*sin((c*w)/2))/w 所以傅里叶变换为:

2 A

sin( )

X ( )

2

2)利用 MATLAB绘出矩形脉冲信号的频谱,观察矩形脉冲宽度变化时对频谱波形的影响;代码 :

A=input('A=' );

c=input('c=' );

syms t w

X=int(A*(heaviside(t+c/2)-heaviside(t-c/2))*exp(-j*w*t),t,-1,1)

ezplot(abs(X),[-6*pi,6*pi]);

grid on ;

xlabel('\omega');

ylabel('Magnitude');

title('|X(\omega)|')

图形如下:

|X( )|

1

e 0.8

d

u 0.6

i

n

g

0.4

a

M

0.2

-15 -10 -5 0 5 10 15 令 A=1,改变的大小:

c=0.25 c=0.5

e 0.2 e 0.4

d d 0.3

u u

t t

i i

n n

g 0.15 g 0.2

a a

M M

0.1

0.1

-10 0 10 -10 0 10

c=1 c=2

e 0.8

e 1.5

d d

u 0.6 u

t t

i i 1

n n

g 0.4 g

a a

M M

0.5

0.2

-10 0 10 -10 0 10

增大时,频谱振幅增大,有效频宽减小。

3).让矩形脉冲的面积始终等于1,改变矩形脉冲宽度,观察矩形脉冲信号时域波形和频谱随矩形脉冲宽度的变化趋势。

syms t w title( 'x(t)' );

c=input( 'c=' ); subplot(212);

x=(1/c).*(heaviside(t+c/2)-heavi ezplot(abs(X),[-6*pi,6*pi]);

side(t-c/2)); grid on ;

X=int(x*exp(-j*w*t),t,-c/2,c/2); xlabel( '\omega' );

subplot(211); ylabel( 'Magnitude' );

ezplot(x,[-c,c]); title( '|X(w)|' )

xlabel( 't' ); axis tight

时域波形及频谱在不同脉冲宽度下的图像:

c=0.25 c=0.5

x(t) x(t)

4 2

3 1.5

2 1

1 0.5

0 0

-0.25 -0.2 -0.15 -0.1 -0.05 0 0.05 0.1 0.15 0.2 0.25 -0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5

t t

|X(w)| |X(w)|

e 0.8 e 0.8

d d 0.6

u u

t t

i i

n n

g 0.6 g 0.4

a a

M M

0.2

0.4

-15 -10 -5 0 5 10 15 -15 -10 -5 0 5 10 15

c=1:c=2

x(t) x(t)

1

0.4

0.5

0.2

0 0

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2

t t

|X(w)| |X(w)|

e 0.8

e

0.8

d d 0.6

u 0.6 u

t i

n

n

g 0.4 g 0.4

a a

M M

0.2 0.2

-15 -10 -5 0 5 10 15 -15 -10 -5 0 5 10 15 分析以上图形得:随着矩形脉冲宽度值的增加,时域波形幅值减小,信号频带宽度减小。

观察实验结果,思考如下问题:

2—1.比较矩形脉冲信号和周期矩形脉冲信号的频谱,两者之间有何异同?

答:

异:矩形脉冲信号的频谱是连续的,周期矩形脉冲信号的频谱是离散的。

同:有效频带宽度与脉冲宽度成反比

当脉冲宽度相同时,二者频谱的包络相同。

2— 2.根据矩形脉冲宽度变化时频谱的变化规律,说明信号的有效频带宽度与其时域宽度

之间有什么关系?当脉冲宽度0 ,脉冲的面积始终等于1,其频谱有何特点?

答:

信号的有效频带宽度与其时域宽度成反比。

由 3)的四个图像可知,当减小时,信号频带宽度增大而最大幅值始终为1,当脉冲宽度

0 时,信号的频谱无限趋近于一条幅值为 1 的直线。

(3)已知 x(n)是如图所示的周期方波序列。

x(n)

1

-N -N10

N1N n

利用 MATLAB绘制出周期方波序列的频谱波形,改变参数N 和N1的大小,观察频谱波形的变化趋势。

N=input( 'N=' ); xlabel( 'n' );

N1=input( 'N1=' ); title([ 'x(n) N=' num2str(N) ' N1=' n=1:N; num2str(N1)]);

x=[ones(1,N1) zeros(1,N-1-2*N1) subplot(212);

ones(1,N1+1)]; stem(n,X, 'filled' );

X=fft(x); xlabel( 'k' );

stem(n,x, 'filled' ); title([ 'X(k) N=' num2str(N) ' N1=' subplot(211) num2str(N1)])

stem(n,x, 'filled' );

N=9,N1=2 时图像如下:

x(n) N=9 N1=2

1

0.5

123456789

n

X(k) N=9 N1=2

6

4

2

-2

1 2 3 4 5 6 7 8 9

k

改变 N 和N1的大小,频谱波形变化如下:

5 X(k) N=10 N1=2

9

X (k) N=10 N1=4

8

4

7

3

6

5

2 4

3

1

2

1

-1 -1

0 5 10 0 5 10

X(k) N=20 N1=2 X(k) N=20 N1=4

5 X(k) N=40 N1=2

10

X(k) N=40 N1=4

5 10

4 8 4 8 3 6 3 6 2 4 2 4 1 2 1 2 0 0 0 0

-1

5 10 15 20 -2

5 10 15 20

-1

10 20 30 40

-2

10 20 30 40

0 0 0 0

k k k k

由上面六组图可得:N1一定的时候,随着N 的增大,频谱的谱线逐渐变密,但包络线保持不变。

N 一定的时候,随着N1的增大,频谱振幅增大,而且在以横轴为轴的两侧振动更为剧烈。

观察实验结果,思考如下问题:

3—1.以周期方波序列为例,说明周期序列与连续周期信号的频谱有何异同。

答:

异:连续周期信号频谱随着时间变量t 的绝对值的增大,振幅逐渐收敛于零;

而周期序列频谱在一个周期内,由中间向两侧振幅逐渐增大。

同:二者的频谱都是离散的,具有谐波性。

3—2.随着周期方波序列占空比的变化,其频谱如何随之变化?

答:

随着占空比的增大,谱线逐渐变得稀疏。

(4)已知一矩形脉冲序列。

x(n) 1,|n | N 1 0,| n | N1

利用 MATLAB绘制周期方波序列的频谱波形,改变矩形脉冲序列的宽度,观察频谱波形的变化趋势。

N1=input( 'N1=' ); xlabel( 'n' );

w=-pi:0.01*pi:pi; title( 'x(n)' );

n=-N1:N1; subplot(212);

x=ones(size(n)); plot(w/pi,abs(X));

X=x*exp(-j*n'*w); xlabel( '\Omega/\pi' );

subplot(211); title( '|X(e^j^\Omega)|' );

stem(n,x, 'filled' );

取不同的 N1 值:

标准

>> DFTthird_2_5 >> DFTthird_2_5 N1=4

N1=8

1

x(n)

1

x(n)

0.5

0.5

0 -3 -2 -1

0 1 2 3 4

-6 -4 -2

0 2 4 6 8

-4

-8

n

n

10

|X(e j

)|

20

|X(e j

)|

15 5

10

5

-0.8-0.6

-0.4

-0.2

0.2

0.40.6

0.8

1

0 -0.8-0.6

-0.4 -0.2

0.2

0.40.6

0.8

1

-1

-1

/

/

>> DFTthird_2_5 N1=16

x(n)

1

0.5

0 -15 -10 -5

0 5 10 15 20

-20

n

|X(e

j

)|

40

30

20 10

0 -0.8

-0.6

-0.4

-0.2

0 0.2

0.4

0.6

0.8

1

-1

/

随着 N1 增大,频带宽度减小,振幅增大。 观察实验结果,思考如下问题:

4—1.随着矩形脉冲序列宽度的变化,其频谱如何随之变化?其宽度与频谱的有效频带宽度 有何关系? 答:

随着矩形脉冲序列宽度增大,频谱有效频带宽度逐渐减小,频谱振幅逐渐增大。 矩形脉冲序列宽度与频谱有效频带宽度成反比。 四.实验收获体会

这次实验分别对连续周期信号、 连续非周期信号、 离散周期时间信号、 离散非周期时间信号

进行了频谱分析,采用

MATLAB 对信号进行傅里叶变换,加深了对信号频谱的理解,

更熟练

地掌握了信号的频域分析方法。

操作系统实验报告_实验五

实验五:管道通信 实验内容: 1.阅读以下程序: #include #include #include main() { int filedes[2]; char buffer[80]; if(pipe(filedes)<0) //建立管道,filedes[0]为管道里的读取端,filedes[1]则为管道的写入端 //成功则返回零,否则返回-1,错误原因存于errno中 err_quit(“pipe error”); if(fork()>0){ char s[ ] = “hello!\n”; close(filedes[0]); //关闭filedes[0]文件 write(filedes[1],s,sizeof(s)); //s所指的内存写入到filedes[1]文件内 close(filedes[1]); //关闭filedes[0]文件 }else{ close(filedes[1]); read(filedes[0],buffer,80); //把filedes[0]文件传送80个字节到buffer缓冲区内 printf(“%s”,buffer); close(filedes[0]); } } 编译并运行程序,分析程序执行过程和结果,注释程序主要语句。

2.阅读以下程序: #include #include #include main() { char buffer[80]; int fd; unlink(FIFO); //删除FIFO文件 mkfifo(FIFO,0666); //FIFO是管道名,0666是权限 if(fork()>0){ char s[ ] = “hello!\n”;

信号与系统实验报告1

学生实验报告 (理工类) 课程名称:信号与线性系统专业班级:M11通信工程 学生学号:1121413017 学生姓名:王金龙 所属院部:龙蟠学院指导教师:杨娟

20 11 ——20 12 学年第 1 学期 金陵科技学院教务处制 实验报告书写要求 实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。 实验报告书写说明 实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。 填写注意事项 (1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。 (3)尽量采用专用术语来说明事物。 (4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。 实验报告批改说明 实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。 实验报告装订要求

实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。

实验项目名称:常用连续信号的表示 实验学时: 2学时 同组学生姓名: 无 实验地点: A207 实验日期: 11.12.6 实验成绩: 批改教师: 杨娟 批改时间: 一、实验目的和要求 熟悉MATLAB 软件;利用MATLAB 软件,绘制出常用的连续时间信号。 二、实验仪器和设备 586以上计算机,装有MATLAB7.0软件 三、实验过程 1. 绘制正弦信号)t Asin t (f 0?ω+=(),其中A=1,πω2=,6/π?=; 2. 绘制指数信号at Ae t (f =),其中A=1,0.4a -=; 3. 绘制矩形脉冲信号,脉冲宽度为2; 4. 绘制三角波脉冲信号,脉冲宽度为4;斜度为0.5; 5. 对上题三角波脉冲信号进行尺度变换,分别得出)2t (f ,)2t 2(f -; 6. 绘制抽样函数Sa (t ),t 取值在-3π到+3π之间; 7. 绘制周期矩形脉冲信号,参数自定; 8. 绘制周期三角脉冲信号,参数自定。 四、实验结果与分析 1.制正弦信号)t Asin t (f 0?ω+=(),其中A=1,πω2=,6/π?= 实验代码: A=1;

操作系统实验报告

操作系统教程 实 验 指 导 书 姓名: 学号: 班级:软124班 指导老师:郭玉华 2014年12月10日

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2)掌握WINDOWS API的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验内容和步骤 (1)编写基本的Win32 Consol Application 步骤1:登录进入Windows,启动VC++ 6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序: E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : 有可能是因为DOS下路径的问题 (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。 步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 E:\课程\os课\os实验\程序\os12\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) : 因为程序是个死循环程序 步骤5:分别屏蔽While循环中的两个for循环,或调整两个for循环的次数,写出运行结果。 屏蔽i循环: 屏蔽j循环: _______________________________________________________________________________调整循环变量i的循环次数:

信号系统实验报告

电子工程系 信号与系统课程实验报告 2011-----2012学年第一学期 专业: 电子信息工程技术班级: 学号 : 姓名: 指导教师: 实常用连续时间信号的实现

一、实验目的 (1)了解连续时间信号的特点; (2)掌握连续时间信号表示的向量法和符号法; (3)熟悉MATLAB Plot函数等的应用。 二、实验原理 1、信号的定义 信号是随时间变化的物理量。信号的本质是时间的函数。 2、信号的描述 1)时域法 时域法是将信号表示成时间的函数f(t)来对信号进行描述的方法。信号的时间特性指的是信号的波形出现的先后,持续时间的长短,随时间变化的快慢和大小,周期的长短等。 2)频域(变换域)法 频域法是通过正交变换,将信号表示成其他变量的函数来对信号进行描述的方法。一般常用的是傅立叶变换。信号的频域特性包括频带的宽窄、频谱的分布等。 信号的频域特性与时域特性之间有着密切的关系。 3、信号的分类 按照特性的不同,信号有着不同的分类方法。 (1)确定性信号:可以用一个确定的时间函数来表示的信号。 随机信号:不可以用一个确定的时间函数来表示,只能用统计特性加以描述的信号。 (2)连续信号:除若干不连续的时间点外,每个时间点在t上都有对应的数值信号。离散信号:只在某些不连续的点上有数值,其他时间点上信号没有定义的信号。 (3)周期信号:存在T,使得等式f(t+T)=f(t)对于任意时间t都成立的信号。非周期信号:不存在使得等式f(t+T)=f(t)对于任意时间t都成立的信号。 绝对的周期信号是不存在的,一般只要在很长时间内慢走周期性就可以了。 (4)能量信号:总能量有限的信号。 功率信号:平均功率有限切非零的信号。 (5)奇信号:满足等式f(t)=--f(--t)的信号。偶信号:满足等式f(t)=f(--t)的信号。 三、涉及的MATLAB函数 1、plot函数 功能:在X轴和Y轴方向都按线性比例绘制二维图形。 调用格式: Plot(x,y):绘出相x对y的函数线性图。 Plot(x1,y1,x2,y2,…..):会出多组x对y的线性曲线图。 2、ezplot函数 功能:绘制符号函数在一定范围内的二维图形。简易绘制函数曲线。 调用格式: Ezplot (fun):在[-2π,2π]区间内绘制函数。 Ezplot (fun,[min,max]):在[min,max]区间内绘函数。 Ezplot (funx,funy):定义同一曲面的函数,默认的区间是[0, 2π]。】 3、sym函数 功能:定义信号为符号的变量。 调用格式:sym(fun):fun为所要定义的表达式。 4、subplot函数

北京理工大学信号与系统实验实验报告

实验1 信号的时域描述与运算 一、实验目的 1. 掌握信号的MATLAB表示及其可视化方法。 2. 掌握信号基本时域运算的MA TLAB实现方法。 3. 利用MA TLAB分析常用信号,加深对信号时域特性的理解。 二、实验原理与方法 1. 连续时间信号的MATLAB表示 连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。 从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。例如一个正弦信号可以表示如下: >> t=0:0.01:10; >> x=sin(t); 利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。 如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。例如对于上述正弦信号,可以用符号对象表示如下: >> x=sin(t); >> ezplot(X); 利用ezplot(x)命令可以绘制上述信号的时域波形 Time(seconds) 图1 利用向量表示连续时间信号

t 图 2 利用符号对象表示连续时间信号 sin(t) 2.连续时间信号的时域运算 对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。 1)相加和相乘 信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。 2)微分和积分 对于向量表示法表示的连续时间信号,可以通过数值计算的方法计算信号的微分和积分。这里微分使用差分来近似求取的,由时间向量[N t t t ,,,21?]和采样值向量[N x x x ,,,21?]表示的连续时间信号,其微分可以通过下式求得 1,,2,1,|)('1-?=?-≈ +=N k t x x t x k k t t k 其中t ?表示采样间隔。MA TLAB 中用diff 函数来计算差分 k k x x -+1。 连续时间信号的定积分可以由MATLAB 的qud 函数实现,调用格式为 quad ('function_name',a,b) 其中,function_name 为被积函数名,a 、b 为积分区间。

信号与系统实验报告_1(常用信号的分类与观察)

实验一:信号的时域分析 一、实验目的 1.观察常用信号的波形特点及产生方法 2.学会使用示波器对常用波形参数的测量 二、实验仪器 1.信号与系统试验箱一台(型号ZH5004) 2.40MHz双踪示波器一台 3.DDS信号源一台 三、实验原理 对于一个系统特性的研究,其中重要的一个方面是研究它的输入输出关系,即在一特定的输入信号下,系统对应的输出响应信号。因而对信号的研究是对系统研究的出发点,是对系统特性观察的基本手段与方法。在本实验中,将对常用信号和特性进行分析、研究。 信号可以表示为一个或多个变量的函数,在这里仅对一维信号进行研究,自变量为时间。常用信号有:指数信号、正弦信号、指数衰减正弦信号、复指数信号、Sa(t)信号、钟形信号、脉冲信号等。 1、信号:指数信号可表示为f(t)=Ke at。对于不同的a取值,其波形表现为不同的形式,如下图所示: 图1―1 指数信号 2、信号:其表达式为f(t)=Ksin(ωt+θ),其信号的参数:振幅K、角频率ω、与初始相位θ。其波形如下图所示:

图1-2 正弦信号 3、指数衰减正弦信号:其表达式为其波形如下图: 图1-3 指数衰减正弦信号 4、Sa(t)信号:其表达式为:。Sa(t)是一个偶函数,t= ±π,±2π,…,±nπ时,函数值为零。该函数在很多应用场合具有独特的运用。其信号如下图所示:

图1-4 Sa(t)信号 5、钟形信号(高斯函数):其表达式为:其信号如下图所示: 图1-5 钟形信号 6、脉冲信号:其表达式为f(t)=u(t)-u(t-T),其中u(t)为单位阶跃函数。其信号如下图所示: 7、方波信号:信号为周期为T,前T/2期间信号为正电平信号,后T/2期间信号为负电平信号,其信号如下图所示 U(t)

操作系统实验报告

《计算机操作系统》实验报告 教师: 学号: 姓名: 2012年3月6日 计算机学院

实验题目:请求页式存储管理(三) ----------------------------------------------------------------------------- 实验环境:VC6.0++ 实验目的:学生应独立地用高级语言编写几个常用的存储分配算法,并设计一个存储管理的模拟程序,对各种算法进行分析比较,评测其性能优劣,从而加深对这些算法的了解。实验内容: (1)编制和调试示例给出的请求页式存储管理程序,并使其投入运行。 (2)增加1~2种已学过的淘汰算法,计算它们的页面访问命中率。试用各种算法的命中率加以比较分析。(增加了FIFO) 操作过程: (1)产生随机数 (2)输入PageSize(页面大小1 /2/4/8 K) (pageno[i]=int(a[i]/1024)+1) (3)菜单选择

(4)OPT/ LRU/FIFO演示(pagesize=1K)

(5) 过程说明(PAGESIZE = 4K ) OPT :最佳置换算法(淘汰的页面是以后永不使用,或许是在最长时间内不再被访问的页面) //在Table 表中如果未找到,记录每个元素需要找的长度 //全部table 中元素找完长度,然后进行比较,找出最大的,进行淘汰 int max=0; int out; for(k=0;kmax){ max = table_time[k]; out = k; } }//找出最长时间,进行替换 table[out]=pageno[i]; page_out++;

北京理工大学信号与系统实验报告2 LTI系统的时域分析

实验2 LTI 系统的时域分析 (基础型实验) 一. 实验目的 1. 掌握利用MATLAB 对系统进行时域分析的方法。 2. 掌握连续时间系统零状态响应、冲击响应和阶跃响应的求解方法。 3. 掌握求解离散时间系统响应、单位抽样响应的方法。 4. 加深对卷积积分和卷积和的理解。掌握利用计算机进行卷积积分和卷积和计算的方法。 二. 实验原理与方法 1. 连续时间系统时域分析的MATLAB 实现 1) 连续时间系统的MA TLAB 表示 LTI 连续系统通常可以由系统微分方程描述,设描述系统的微分方程为: (N)(N 1)(M)(M 1)1010(t)(t)...(t)b (t)b (t)...b (t)N N M M a y a y a y x x x ----++=++ 则在MATLAB 中可以建立系统模型如下: 1010[b ,b ,...,b ];a [a ,a ,...,a ];sys tf(b,a); M M N N b --=== 其中,tf 是用于创建系统模型的函数,向量a 和b 的元素是以微分方程求导的降幂次序来排列的,如果有缺项,应用0补齐,例如由微分方程 2''(t)y'(t)3y(t)x(t)y ++= 描述的系统可以表示为: >> b=[1]; >> a=[2 1 3]; >> sys=tf(b,a); 而微分方程由 ''(t)y'(t)y(t)x''(t)x(t)y ++=- 描述的系统则要表示成 >> b=[1 0 -1]; >> a=[1 1 1]; >> sys=tf(b,a); 2) 连续时间系统的零状态响应 零状态响应指系统的初始状态为零,仅由初始信号所引起的响应。MATLAB 提供了一个用于求解零状态响应的函数lism ,其调用格式如下: lism (sys,x,t )绘出输入信号及响应的波形,x 和t 表示输入信号数值向量及其时间向量。 y= lism (sys,x,t )这种调用格式不绘出波形,而是返回响应的数值向量。 3) 连续时间系统的冲激响应与阶跃响应

操作系统实验报告

《操作系统》课程实验报告 专业:软件工程 班级:软件二班 学号: 2220111350 姓名:韩培培 序号: 14

目录: 实验一、进程的创建 实验二、进程控制 实验三、进程的管道通信 实验四、消息通信 实验五、进程调度 实验六、FIFO页面调度 实验七、LRU页面置换算法

实验一进程的创建 一.实验目的:进程的创建 二.实验内容:编写一段程序,使用系统调用 FORK( )创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“A”子进程分别显示字符“B”和“C”。试观察记录屏幕上的显示结果,并分析原因。 三.实验代码: #include <stdio.h> Main() { int p1,p2; While((p1=fork())==-1); If (p1==0) Putchar(ˊbˊ); else { While((p2=fork())==-1); If(p2==0) Putchar(ˊcˊ); else putchar(ˊaˊ); } } 四.实验运行结果

五.分析原因 程序首先调用Fork()函数创建一个子进程1.当创建进程不成功,循环创建进程,直至进程创建成功。如果Fork()返回值为0,表示当前进程是子进程1,显示字符B。如果Fork()返回值大于0,则表示当前进程是父进程,表示当前的程序代码是父进程所要执行的。父进程调用Fork()创建子进程2。当创建进程不成功时,循环创建进程直至成功。如果Fork()返回值为0,则表示当前进程是子进程2,显示字符C。如果Fork()返回值大于0,则表示当前进程 是父进程,输出字符A。

信号与系统实验报告

实验三 常见信号的MATLAB 表示及运算 一、实验目的 1.熟悉常见信号的意义、特性及波形 2.学会使用MATLAB 表示信号的方法并绘制信号波形 3. 掌握使用MATLAB 进行信号基本运算的指令 4. 熟悉用MATLAB 实现卷积积分的方法 二、实验原理 根据MATLAB 的数值计算功能和符号运算功能,在MA TLAB 中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。在采用适当的MA TLAB 语句表示出信号后,就可以利用MA TLAB 中的绘图命令绘制出直观的信号波形了。 1.连续时间信号 从严格意义上讲,MATLAB 并不能处理连续信号。在MATLAB 中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB 中连续信号可用向量或符号运算功能来表示。 ⑴ 向量表示法 对于连续时间信号()f t ,可以用两个行向量f 和t 来表示,其中向量t 是用形如12::t t p t =的命令定义的时间范围向量,其中,1t 为信号起始时间,2t 为终止时间,p 为时间间隔。向量f 为连续信号()f t 在向量t 所定义的时间点上的样值。 ⑵ 符号运算表示法 如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。 ⑶ 常见信号的MATLAB 表示 单位阶跃信号 单位阶跃信号的定义为:10()0 t u t t >?=? 0); %定义函数体,即函数所执行指令

操作系统实验报告

操作系统实验报告 实验名称: 系统的引导 所在班级: 指导老师: 老师 实验日期: 2014年3 月29 日

一、实验目的 ◆熟悉hit-oslab实验环境; ◆建立对操作系统引导过程的深入认识; ◆掌握操作系统的基本开发过程; ◆能对操作系统代码进行简单的控制,揭开操作系统的神秘面纱。 二、实验容 1. 阅读《Linux核完全注释》的第6章引导启动程序,对计算机和Linux 0.11的引导过程进行初步的了解。 2. 按照下面的要求改写0.11的引导程序bootsect.s。 3. 有兴趣同学可以做做进入保护模式前的设置程序setup.s。 4. 修改build.c,以便可以使用make BootImage命令 5. 改写bootsect.s主要完成如下功能: bootsect.s能在屏幕上打印一段提示信息XXX is booting...,其中XXX是你给自己的操作系统起的名字,例如LZJos、Sunix等。 6. 改写setup.s主要完成如下功能: bootsect.s能完成setup.s的载入,并跳转到setup.s开始地址执行。而setup.s 向屏幕输出一行"Now we are in SETUP"。setup.s能获取至少一个基本的硬件参数(如存参数、显卡参数、硬盘参数等),将其存放在存的特定地址,并输出到屏幕上。setup.s不再加载Linux核,保持上述信息显示在屏幕上即可。 三、实验环境

本实验使用的系统是windows系统或者是Linux系统,需要的材料是osexp。 四、实验步骤 1. 修改bootsect.s中的提示信息及相关代码; 到osexp\Linux-0.11\boot目录下会看到图1所示的三个文件夹,使用UtraEdit 打开该文件。将文档中的98行的mov cx,#24修改为mov cx,#80。同时修改文档中的第246行为图2所示的情形。 图1图2 图3 2. 在目录linux-0.11\boot下,分别用命令as86 -0 -a -o bootsect.obootsect.s和 ld86 -0 -s -obootsectbootsect.o编译和bootsect.s,生成bootsect文件; 在\osexp目录下点击MinGW32.bat依此输入下面的命令: cd linux-0.11 cd boot as86 -0 -a -o bootsect.obootsect.s ld86 -0 -s -o bootsectbootsect.o

操作系统实验报告 (5)

实验名称:存储管理 学号班级姓名 1 实验目的: 存储管理的主要功能之一是合理地分配空间。请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。 2 实验预备内容: (1)通过随机数产生一个指令序列,共320条指令。指令的地址按下述原则生成: ①50%的指令是顺序执行的; ②50%的指令是均匀分布在前地址部分; ③50%的指令是均匀分布在后地址部分。 具体的实施方法是: ①在 [0,319] 的指令之间随即选取一起点m; ②顺序执行一条指令,即执行地址为m+1的指令; ③在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m′; ④顺序执行一条指令,其地址为 m′+ 1; ⑤在后地址[m′+ 2,319]中随机选取一条指令并执行; ⑥重复上述步骤①-⑤,直到执行320次指令。 (2)将指令序列变换为页地址流 设:①页面大小为1k; ②用户内存容量为4页到32页; ③用户虚存容量为32k。 在用户虚存中,按每k存放10条指令排在虚存地址,即320条指令在虚存中的存放方式为: 第0条-第9条指令为第0页(对应虚存地址为[0,9]); 第10条-第19条指令为第一页(对应虚存地址为[10,19]); …… 第310条~第319条指令为第31页(对应虚地址为[310,319])。 按以上方式,用户指令可组成32页。 (3)计算并输出下述各种算法在不同内存容量下的命中率。 ①先进先出的算法(FIFO); ②最近最少使用算法(LRR); ③最佳淘汰算法(OPT)先淘汰最不常用的页地址; ④最少访问页面算法(LFR); ⑤最近最不经常使用算法(NUR)。 其中③和④为选择内容。

信号与系统实验报告

信号与系统实验报告

信号与系统实验报告 姓名: 学号: 软件部分: 表示信号与系统的MATLAB 函数、工具箱 一、实验项目名称:表示信号、系统的MATLAB 函数、工具箱 二、实验目的与任务: 目的:1、加深对常用离散信号的理解; 2、熟悉表示信号的基本MATLAB 函数。 任务:基本MATLAB 函数产生离散信号;基本信号之间的简单运算;判 断信号周期。 三、实验原理: 利用MATLAB 强大的数值处理工具来实现信号的分析和处理,首先就是要学会应用MATLAB 函数来构成信号。 四、实验内容及步骤: 常见的基本信号可以简要归纳如下: 实验内容(一)、 编制程序产生上述5种信号(长度可输入确定),并绘出其图形。 其中5种信号分别为单位抽样序列、单位阶跃序列、正弦序列、指数序列和复正弦序列。 实验内容(二)、 在[0,31]出下列图像 1223[]sin( )cos() 4 4 []cos ( ) 4[]sin()cos() 48 n n x n n x n n n x n πππππ=== 五、项目需用仪器设备名称:计算机、MATLAB 软件。

六、所需主要元器件及耗材:无 七、实验程序及数据 函 数 程序图片 单位冲击函数x=zeros(1,10); x(1)=1; stem(x) 单位阶跃函数x=ones(1,30); plot(x)

正弦序列n=0:30-1; x=sin(2*pi*n/10); stem(x) x=cos(1/4*pi*n).*cos(1/4*pi*n) ; stem(x) 复正弦序列n=0:29; x=exp(j*5*n); stem(x) 指数序列n=0:10; x=2.^n; stem(x)

操作系统实验报告

实验二进程调度 1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有 n 个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过 t 个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言

4 设计思想: (1)程序中进程可用PCB表示,其类型描述如下: struct PCB_type { int pid ;// 进程名 int state ;// 进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 int cpu_time ; //运行需要的CPU寸间(需运行的时间片 个数) } 用PCB来模拟进程; (2)设置两个队 列,将处于“就绪”状态的进程PCB挂在队列readyxx ;将处于“阻塞”状态的进程 PCB挂在队列blockedxx。 队列类型描述如下: struct QueueNode{

struct PCB_type PCB; Struct QueueNode *next; } 并设全程量: struct QueueNode *ready_head=NULL,//ready 队列队首指针 *ready_tail=NULL , //ready 队列队尾指针 *blocked_head=NULL,//blocked 队列队首指 针 *blocked_tail=NULL; //blocked 队列队尾指 针 (3)设计子程序: start_state(); 读入假设的数据,设置系统初始状态,即初始化就绪队列和 阻塞队列 dispath(); 模拟调度,当就绪队列的队首进程运行一个时间片后,放到就绪队列末尾,每次都是队首进程进行调度,一个进程运行结束 就从就绪队列中删除,当到 t 个时间片后,唤醒阻塞队列队首进程。

信号与系统实验报告3 (2)

信号与系统实验 实验三:信号的卷积 (第三次实验)

【实验目的】 1. 理解卷积的物理意义; 2. 掌握运用计算机进行卷积运算的原理和方法; 3. 熟悉卷积运算函数conv的应用; 【实验内容】 给定如下因果线性时不变系统: y[n]+0.71y[n-1]-0.46y[n-2]-0.62y[n-3=0.9x[n]-0.45x[n-1]+0.35x[n-2]+0.002x[n-3] (1)不用impz函数,使用filter命令,求出以上系统的单位冲激响应h[n]的前20个样本; 代码如下: clear all; N=[0:19]; num=[0.9 -0.45 0.35 0.002]; den=[1 0.71 -0.46 -0.62]; h=filter(num,den,N); stem(N,h); xlabel('ê±??Dòo?'); ylabel('??·ù'); title('μ¥??3??¤?ìó|'); grid; 图像如下:

(2)得到h[n]后,给定x[n],计算卷积输出y[n];并用滤波器h[n]对输入x[n]滤波,求得y1[n]; 代码如下: clear all; N=[0:19]; num=[0.9 -0.45 0.35 0.002]; den=[1 0.71 -0.46 -0.62]; h=filter(num,den,N); x=[1 -2 3 -4 3 2 1]; y=conv(h,x); n=0:25; subplot(2,1,1); stem(n,y); xlabel('时间序号n');ylabel('振幅'); title('用卷积得到的输出');grid; x1=[x zeros(1,19)]; y1=filter(h,1,x1); subplot(2,1,2); stem(n,y1);

操作系统实验报告_实验四

实验四:进程管理(二) 实验内容: 1.编写一个程序,打印进程的如下信息:进程标识符,父进程标识符,真实用户ID,有效用户ID,真实用户组ID,有效用户组ID。并分析真实用户ID和有效用户ID的区别。 源代码及结果: 真实用户ID和有效用户ID的区别: 真实用户ID:这个ID就是我们登陆unix系统时的身份ID。 有效用户ID:定义了操作者的权限。有效用户ID是进程的属性,决定了该进程对文件的访问权限。 2.阅读如下程序,编译并运行,分析进程执行过程的时间消耗(总共消耗的时间和CPU 消耗的时间),并解释执行结果。再编写一个计算密集型的程序替代grep,比较两次时间的花销。注释程序主要语句。 /* process using time */ #include #include #include #include #include void time_print(char *,clock_t);

int main(void){ //取得进程运行相关的时间 clock_t start,end; struct tms t_start,t_end; start = times(&t_start); system(“grep the /usr/doc/*/* > /dev/null 2> /dev/null”); /*command >/dev/null的作用是将是command命令的标准输出丢弃,而标准错误输出还是在屏幕上。一般来讲标准输出和标准错误输出都是屏幕,因此错误信息还是会在屏幕上输出。>/dev/null 2> /dev/null 标准输出与标准错误输出都会被丢弃*/ // 0 1 2 标准输入标准输出错误输出 // > 将信息放到该文件null中 end=times(&t_end); time_print(“elapsed”,end-start); puts(“parent times”); time_print(“\tuser CP U”,t_end.tms_utime); time_print(“\tsys CPU”,t_end.tms_stime); puts(“child times”); time_print(“\tuser CPU”,t_end.tms_cutime); time_print(“\tsys CPU”,t_end.tms_cstime); exit(EXIT_SUCCESS); } void time_print(char *str, clock_t time) { long tps = sysconf(_SC_CLK_TCK); /*函数sysconf()的作用为将时钟滴答数转化为秒数,_SC_CLK_TCK 为定义每秒钟

中科大信号与系统 实验报告2

信号与系统实验报告 一、实验目的 1. 熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法 2. 熟悉连续(离散)时间系统在任意信号激励下响应的求解方法 3. 熟悉应用MATLAB实现求解系统响应的方法 二、实验原理 1.连续时间系统求解各种响应 impulse( ) 函数 函数impulse( )将绘制出由向量a和b所表示的连续系统在指定时间范围内的单位冲激响应h(t)的时域波形图,并能求出指定时间范围内冲激响应的数值解。 以默认方式绘出由向量a和b所定义的连续系统的冲激响应的时域波形。 绘出由向量a和b所定义的连续系统在0 ~ t0时间范围内冲激响应的时域波形。 绘出由向量a和b所定义的连续系统在t1 ~ t2时间范围内,并且以时间间隔p均匀取样的冲激响应的时域波形。 只求出由向量a和b所定义的连续系统在t1 ~ t2时间范围内,并且以时间间隔p均匀取样的冲激响应的数值解,但不绘出其相应波形。 step( ) 函数 函数step( )将绘制出由向量a和b所表示的连续系统的阶跃响应,在指定的时间范围内的波形图,并且求出数值解。和impulse( )函数一样,step( )也有如下四种调用格式: step( b,a) step(b,a,t0) step(b,a,t1:p:t2) y=step(b,a,t1:p:t2) 上述调用格式的功能和impulse( )函数完全相同,所不同只是所绘制(求解)的是系统的阶跃响应g(t),而不是冲激响应h(t)。 lsim( )函数 根据系统有无初始状态,lsim( )函数有如下两种调用格式: ①系统无初态时,调用lsim( )函数可求出系统的零状态响应,其格式如下:

信号与系统实验报告

信号与系统实验 指导老师: 实验时间: 2015年6月 学校:海南大学 学院:信息科学技术学院 专业班级: 姓名: 学号:

《信号与系统实验》 实验一基本信号在MATLAB中的表示和运算 一、实验目的 1.学会用MATLAB表示常用连续信号的方法; 2.学会用MATLAB进行信号基本运算的方法; 二、实验原理 1.连续信号的MATLAB表示 MATLAB提供了大量的生成基本信号的函数,例如指数信号、正余弦信号。 表示连续时间信号有两种方法,一是数值法,二是符号法。数值法是定义某一时间范围和取样时间间隔,然后调用该函数计算这些点的函数值,得到两组数值矢量,可用绘图语句画出其波形;符号法是利用MATLAB的符号运算功能,需定义符号变量和符号函数,运算结果是符号表达的解析式,也可用绘图语句画出其波形图。 例1-1指数信号 如f (t) = Ae at,调用格式为ft=A*exp (a*t) 程序: A=1;a=-0.4; t=0:0.01:10; ft=A*exp(a*t); plot(t,ft); grid on; 波形图:

例1-2 正弦信号 调用格式为ft=A*sin(w*t+phi) 程序: A=1;w=2*pi;phi=pi/6; t=0:0.01:8; ft=A*sin(w*t+phi); plot(t,ft); grid on; 波形图: 例1-3 抽样信号 定义为Sa(t) = sin c(t /π ) 程序: t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); grid on; axis([-10,10,-0.5,1.2]); title('抽样信号') 波形图:

操作系统实验报告-实验四

操作系统实验报告-实验四

实验四:进程管理(二) 实验内容: 1.编写一个程序,打印进程的如下信息:进程标识符,父进程标识符,真实用户ID,有效用户ID,真实用户组ID,有效用户组ID。并分析真实用户ID和有效用户ID的区别。 源代码及结果: 真实用户ID和有效用户ID的区别: 真实用户ID:这个ID就是我们登陆unix 系统时的身份ID。 有效用户ID:定义了操作者的权限。有效用户ID是进程的属性,决定了该进程对文件的访问权限。 2.阅读如下程序,编译并运行,分析进程执行过程的时间消耗(总共消耗的时间和CPU

消耗的时间),并解释执行结果。再编写一个计算密集型的程序替代grep,比较两次时间的花销。注释程序主要语句。 /* process using time */ #include #include #include #include #include void time_print(char *,clock_t); int main(void){ //取得进程运行相关的时间 clock_t start,end; struct tms t_start,t_end; start = times(&t_start); system(“grep the /usr/doc/*/* > /dev/null 2> /dev/null”); /*command >/dev/null的作用是将是command命令的标准输出丢弃,而标准错误输出还是在屏幕上。一般来讲标准输出和标准

信号与系统实验报告(常用信号的分类与观察)

实验一:信号得时域分析 一、实验目得 1.观察常用信号得波形特点及产生方法 2.学会使用示波器对常用波形参数得测量 二、实验仪器 1.信号与系统试验箱一台(型号ZH5004) 2.40MHz双踪示波器一台 3.DDS信号源一台 三、实验原理 对于一个系统特性得研究,其中重要得一个方面就是研究它得输入输出关系,即在一特定得输入信号下,系统对应得输出响应信号.因而对信号得研究就是对系统研究得出发点,就是对系统特性观察得基本手段与方法.在本实验中,将对常用信号与特性进行分析、研究。 信号可以表示为一个或多个变量得函数,在这里仅对一维信号进行研究,自变量为时间。常用信号有:指数信号、正弦信号、指数衰减正弦信号、复指数信号、Sa(t)信号、钟形信号、脉冲信号等。 1、信号:指数信号可表示为f(t)=Ke at。对于不同得a取值,其波形表现为不同得形式,如下图所示: 图1―1 指数信号 2、信号:其表达式为f(t)=Ksin(ωt+θ),其信号得参数:振幅K、角频率ω、与初始相位θ。其波形如下图所示:

图1-2 正弦信号 3、指数衰减正弦信号:其表达式为其波形如下图: 图1-3指数衰减正弦信号 4、Sa(t)信号:其表达式为:。Sa(t)就是一个偶函数,t= ±π,±2π,…,±nπ时,函数值为零。该函数在很多应用场合具有独特得运用。其信号如下图所示: 图1-4 Sa(t)信号 5、钟形信号(高斯函数):其表达式为:其信号如下图所示:

图1-5 钟形信号 6、脉冲信号:其表达式为f(t)=u(t)-u(t—T),其中u(t)为单位阶跃函数。其信号如下图所示: f(t) ? ……??…… 0 t 图1-6脉冲信号 7、方波信号:信号为周期为T,前T/2期间信号为正电平信号,后T/2期间信号为负电平信号,其信号如下图所示 U(t) ………… ?0?t 图1-7方波信号 四、实验内容及主要步骤 下列实验中信号产生器得工作模式为11 1、指数信号观察 通过信号选择键1,设置A组输出为指数信号(此时信号输出指示灯为000000)。用示波器测量“信号A组”得输出信号。 输出波形为:

信号系统实验报告123(1)

实验一连续时间信号的时域基本运算 一、实验目的 (1)掌握连续时间信号时域运算的基本方法; (2)掌握相关函数的调用格式及作用; (3)掌握连续信号的基本运算。 二、实验原理 信号的基本运算包括信号的相加(减)和相乘(除).信号的时域变换包括信号的平移、翻转、倒相以及尺度变换。 (1)加减: f(t)=f1(t)±f2(t)(2)乘: f(t)=f1(t)×f2(t) (3)延时或平移:f(t)→(t-t0) t0>0时右移;t0<0时左移 (4)翻转: f(t)→f(-t) (5)尺度变换:f(t)→ f(at) |a|>1时尺度缩小;|a|<1时尺度放大;a<0时,尺度翻转。 (6)标量乘法:f(t)→af(t) (7)倒相: f(t)→-f(t) (8)微分: f(t)→df(t)/dt (9)积分: f(t)→∫t -∞f(t)d(t) 三、涉及的MATLAB函数及其运算 1、stepfun函数 功能:产生一个阶跃信号。 调用格式: Stepfun(t,t 0)其中,t是时间区间,在该区间内阶跃信号一定会产生;t 是信号 发生从0到1跳跃的时刻。 2、diff函数 调用格式: diff (f) : 求函数f对预设独立变数的一次微分值。 diff (f, ’t’) : 求函数f对独立变数t的一次微分值。 3、int函数 调用格式: Int(f): 函数f对预设独立变数的积分值。 Int(f,’t’): 函数f对独立变数t的积分值。 4、heaviside函数 Heaviside(t):产生没有移位的阶跃信号。 Heaviside(t-k):产生向右平移K单位的阶跃信号。 四、实验内容与方法1、验证性实验 (1)移位 实现连续信号的移位,即f(t-t0),或者f(t+t0);常数t0>0。 MATLAB程序 clear all t=0:0.0001:2 y=sin(2*pi*(t)); y1=sin(2*pi*(t-0.2)); plot(t,y,'-',t,y1,'--'); ylabel('f(t)');xlabel('t');title('信号的移位') 运行结果:

相关文档
最新文档