Matlab仿真窄带随机过程

合集下载

matlab某一范围均匀随机取数的方法

matlab某一范围均匀随机取数的方法

matlab某一范围均匀随机取数的方法
在使用Matlab进行数据分析和模拟时,有些场合需要从某一范
围内均匀随机取数。

本文介绍一种简单的方法。

首先,如果需要在 0 和 1 之间均匀随机取数,可以使用 rand 函数。

例如,生成一个 1×10 的数组:
x = rand(1, 10);
如果需要在 [a, b] 范围内均匀随机取数,可以使用以下公式: x = a + (b-a).*rand(1, n);
其中 n 是想要生成的随机数的数量。

例如,生成 10 个在 [1, 5] 范围内的随机数:
x = 1 + 4.*rand(1, 10);
注意,这里的 b-a 是为了保证生成的随机数范围是 [0, 1],再乘以 (b-a) 就可以将其扩展到 [a, b] 范围内。

另外,如果需要生成整数随机数,可以使用 round 函数。

- 1 -。

matlab讲义

matlab讲义

matlab讲义随机过程实验讲义刘继成华中科技大学数学与统计学院前言 (1)第一章Matlab 简介 (2)第二章简单分布的模拟 (6)第三章基本随机过程 (9)第四章Markov过程 (12)第五章模拟的应用和例子 (16)附录各章的原程序 (51)参考文献 (75)若想检验数学模型是否反映客观现实,最自然的方法是比较由模型计算的理论概率和由客观试验得到的经验频率。

不幸的是,这两件事都往往是费时的、昂贵的、困难的,甚至是不可能的。

此时,计算机模拟在这两方面都可以派上用场:提供理论概率的数值估计与接近现实试验的模拟。

模拟的第一步自然是在计算机程序的算法中如何产生随机性。

程序语言,甚至计算器,都提供了“随机”生成[0,1]区间内连续数的方法。

因为每次运行程序常常生成相同的“随机数”,因此这些数被称为伪随机数。

尽管如此,对于多数的具体问题这样的随机数已经够用。

我们将假定计算机已经能够生成[0,1]上的均匀随机数。

也假定这些数是独立同分布的,尽管它们常常是周期的、相关的、……。

……本讲义的安排如下,第一章是Matlab简介,从实践动手角度了解并熟悉Matlab环境、命令、帮助等,这将方便于Matlab的初学者。

第二章是简单随机变量的模拟,只给出了常用的Matlab 模拟语句,没有堆砌同一种变量的多种模拟方法。

对于没有列举的随机变量的模拟,以及有特殊需求的读者应该由这些方法得到启发,或者参考更详细的其他文献资料。

第三章是基本随机过程的模拟。

主要是简单独立增量过程的模拟,多维的推广是直接的。

第四章是Markov过程的模拟。

包括服务系统,生灭过程、简单分支过程等。

第五章是这些模拟的应用。

例如,计算概率、估计积分、模拟现实、误差估计,以及减小方差技术,特别给读者提供了一些经典问题的模拟,通过这些问题的模拟将会更加牢固地掌握实际模拟的步骤。

平稳过程的模拟、以及利用平稳过程来预测的内容并没有包含在本讲义之内,但这丝毫不影响该内容的重要性,这也是将会增补进来的主要内容之一。

MatLab软件编程在随机过程教学中的运用

MatLab软件编程在随机过程教学中的运用
陈 守婷
( 徐州工程 学院数学与物理科 学学院, 徐 州, 2 2 1 0 0 8 )
摘 要 本 文介 绍数 学软件 Ma t L a b在 随机 过程教 学 中的运用 , 通过 三个 实例说 明在教 学 中运用 Ma d a b软件
编程 可以将抽 象的数 学理论 变成可视 的 图形 , 给 学生带来直观的认识 , 进 而提 高学生 的学 习兴趣 以及计 算机
颖, 又 能形成 感官 上 的认 识 , 进 而可 以提高 学生学 习这 门课程 的热情 和兴趣 .
2 几 类重 要 的 随机 过程
本 节将 介 绍 随机过 程教 材 中三 类 常用 的随 机过 程 ] .这 些 随机过 程 的定 义 比较抽 象 , 学
生往往 不容 易理解 和掌握 .
Ch e n S ho u t i n g

( X u z h o u I n s t i t u t e o f T e c h n o l o g y , S c h o o l o f Ma t h e ma t i c s a n d P h y s i c a l S c i e n c e , X u z h o u 2 2 1 0 0 8 , C h i n a )
功能于一体的数学计算语言…. 借助 M a t L a b 编程代码 , 可以将复杂的数学计算过程变得非常
徐州工程 学院高 等教育科学研究课题 ( Y G J 1 3 5 8 ) 收稿 日期 : 2 0 1 3年 8月 1 1日
1 1 8
数 学 理 论 与 应 用
简单快捷 , 而且 可 以将 抽 象 的理论 知识 转变 成直观 的 图形来 理 解
解决实际问题.M a t L a b 是M a t r i x和 L a b o r a t o r y两个词 的组合缩写 , 意为矩 阵工厂 ( 矩 阵实验

matlab中0-1的随机数

matlab中0-1的随机数

在matlab中生成0-1之间的随机数是一种常见的操作,可以通过内置的随机数生成函数来实现。

生成0-1之间的随机数在模拟实验、统计分析、机器学习等方面具有重要的应用,因此掌握在matlab中生成0-1随机数的方法对于数据科学和工程领域的研究人员来说是非常重要的。

1. 使用rand函数生成均匀分布的随机数在matlab中可以使用rand函数来生成均匀分布的随机数,其语法为:```matlabr = rand(m, n)```其中m 和n 分别表示生成随机数的维度,m 表示行数,n 表示列数。

rand函数生成的随机数范围在0-1之间,且满足均匀分布。

2. 使用randn函数生成正态分布的随机数除了生成均匀分布的随机数外,matlab还可以使用randn函数来生成正态分布的随机数,其语法为:```matlabr = randn(m, n)```其中 m 和 n 同样表示生成随机数的维度,randn函数生成的随机数满足标准正态分布,即均值为0,方差为1。

3. 控制随机数的种子在生成随机数时,可以通过控制随机数的种子来保证生成的随机数是可重复的。

在matlab中可以使用rng函数来控制随机数的种子,其语法为:```matlabrng(seed)```其中 seed 表示随机数的种子,通过设置相同的种子可以确保每次生成的随机数是一样的。

在matlab中生成0-1之间的随机数有多种方法,包括使用rand函数生成均匀分布的随机数,使用randn函数生成正态分布的随机数,以及通过控制随机数的种子来保证随机数的可重复性。

这些方法为研究人员在数据分析和模拟实验中提供了便利,对于提高工作效率和保证实验结果的可靠性具有重要意义。

在实际应用中,生成0-1之间的随机数通常用于模拟实验、统计分析、概率建模、机器学习算法等领域。

通过生成符合特定分布的随机数,可以更好地模拟实际场景,并进行有效的数据分析与处理。

在matlab中,生成0-1之间的随机数的应用十分广泛,具有很高的实用价值。

matlab的随机矩阵

matlab的随机矩阵

matlab的随机矩阵MATLAB是一种强大的数值计算和数据可视化工具,在科学和工程领域非常受欢迎。

它具有丰富的数学函数库和图形处理功能,可以进行复杂的数值计算、数据分析和建模,帮助用户快速解决各种问题。

在MATLAB中,我们可以使用随机矩阵来模拟各种现实世界中的随机现象,并对其进行分析和处理。

随机矩阵是由随机数填充的矩阵,每个随机数都是独立和均匀分布的。

具体地说,MATLAB提供了几种生成随机矩阵的函数,如rand、randi和randn等。

这些函数可以生成具有指定大小和分布的随机矩阵。

下面我们来详细介绍一些常用的生成随机矩阵的函数和其应用。

1. rand函数rand函数可以生成一个具有在[0, 1)范围内均匀分布的随机数的矩阵。

它的基本语法如下:A = rand(m, n)其中,m和n分别表示生成的随机矩阵的行数和列数。

例如,我们可以生成一个3×3的随机矩阵:A = rand(3, 3)运行上述代码后,MATLAB会生成一个3×3的随机矩阵A,其元素是0到1之间的随机数。

rand函数在科学实验、模拟和概率分析等领域中经常使用。

例如,在蒙特卡洛方法中,我们可以使用rand函数生成大量的随机数来模拟真实环境中的不确定性,并用于统计估计和优化问题。

此外,rand函数还可以用于生成随机图像、随机噪声等。

2. randi函数randi函数可以生成一个具有特定范围和分布的随机整数矩阵。

它的基本语法如下:A = randi([min, max], m, n)其中,min和max表示生成随机整数的范围,m和n表示生成的随机矩阵的行数和列数。

例如,我们可以生成一个3×3的随机整数矩阵,范围为1到10:A = randi([1, 10], 3, 3)运行上述代码后,MATLAB会生成一个3×3的随机整数矩阵A,其元素是1到10之间的随机整数。

randi函数在密码学、模拟实验和随机算法等领域中经常使用。

matlab的random用法

matlab的random用法

matlab的random用法
Matlab中的random函数用于生成随机数,可用于模拟实验、数据分析、密码学、游戏等方面。

具体使用方式如下:
1. 生成随机整数:使用randi函数,输入两个参数,分别表示随机数的范围。

例如,生成1到10之间的随机整数,代码为:
randi([1,10])。

2. 生成随机小数:使用rand函数,输入一个参数,表示随机数的个数。

例如,生成10个0到1之间的随机小数,代码为:rand(10,1)。

3. 生成符合特定分布的随机数:使用randn、randp、randexp、randg等函数,分别表示标准正态分布、泊松分布、指数分布、正态分布等。

例如,生成10个符合标准正态分布的随机数,代码为:randn(10,1)。

4. 生成随机排列:使用randperm函数,输入一个参数,表示随机排列的长度。

例如,生成1到10的随机排列,代码为:randperm(10)。

注意:在使用random函数时,需要先设置随机数种子,可以使用rng函数。

例如,设置随机数种子为0,代码为:rng(0)。

这样可以保证每次生成的随机数相同。

- 1 -。

matlab 波动率的随机模式 代码

Matlab是一种常用的科学计算软件,它在金融领域中经常被用于计算波动率的随机模式。

波动率是衡量金融市场波动程度的指标,通常用于衡量风险和预测未来的价格波动。

本文将介绍如何使用Matlab编写代码来模拟波动率的随机模式。

二、随机模式在金融领域中,波动率通常被认为是一个随机的过程,因此随机模式是用来模拟波动率的常用方法之一。

随机模式的基本原理是假设波动率的变化是由一个随机的过程驱动的,比较常用的随机模型包括:1. 随机游走模型2. 随机震荡模型3. 随机波动率模型三、Matlab代码实现在Matlab中,可以使用蒙特卡洛模拟方法来模拟波动率的随机模式。

下面是一个简单的例子,展示了如何使用Matlab编写代码来实现随机模式的模拟。

```matlabT = 1; 时间期限N = 252; 时间步长dt = T/N; 时间间隔设置随机模拟的初始条件S0 = 100; 初始价格r = 0.05; 固定利率sigma = 0.2; 波动率mu = r - 0.5*sigma^2; 随机游走的漂移项生成随机数Z = randn(N,1); 生成N个标准正态分布随机数计算路径S = S0 * exp(cumsum((mu)*dt + sigma*sqrt(dt)*Z));画出路径t = 0:dt:T;plot(t, S);xlabel('时间');ylabel('价格');```通过上面的代码,我们可以生成一个随机路径来模拟波动率的随机模式。

我们设置了模拟的参数,包括时间期限T、时间步长N、时间间隔dt等。

我们设置了初始条件,包括初始价格S0、固定利率r、波动率sigma等。

接下来,我们生成了N个标准正态分布的随机数Z,然后计算出路径S来模拟价格的变化。

我们使用plot函数画出了路径随时间的变化图。

四、总结本文介绍了如何使用Matlab编写代码来模拟波动率的随机模式。

在金融领域中,波动率的随机模式是一个重要的概念,通过使用Matlab,我们可以方便快捷地进行随机模拟。

Matlab中的随机数生成与分布拟合技巧

Matlab中的随机数生成与分布拟合技巧在科学研究和工程应用中,我们常常需要使用随机数生成和分布拟合技巧来解决各种问题。

Matlab作为一款强大的科学计算软件,提供了一系列方便的函数和工具,可以帮助我们快速、准确地处理随机数和分布相关的任务。

本文将介绍一些常用的Matlab函数和技巧,以及它们在随机数生成和分布拟合中的应用。

一、随机数生成在Matlab中,我们可以使用rand和randn函数快速生成服从均匀分布和正态分布的随机数序列。

rand函数可以生成0到1之间的均匀分布的随机数,例如:```matlabrandom_numbers = rand(100,1);```上述代码将生成一个100行1列的随机数矩阵。

如果我们需要生成服从其他均匀分布的随机数,可以利用rand函数生成0到1之间的随机数,然后利用线性变换将其映射到目标分布区间。

例如,如果我们需要生成一个在区间[2,5]上均匀分布的随机数,可以使用如下代码:```matlaba = 2;b = 5;random_numbers = a + (b-a)*rand(100,1);```其中a和b分别为所需区间的上下界。

同样,randn函数可以生成服从均值为0、标准差为1的正态分布的随机数序列。

例如:```matlabrandom_numbers = randn(100,1);```与均匀分布类似,如果我们需要生成服从其他正态分布的随机数,也可以通过线性变换来实现。

假设我们需要生成一个均值为m,标准差为s的正态分布随机数,可以使用如下代码:```matlabm = 10;s = 2;random_numbers = m + s*randn(100,1);```其中m和s分别为所需正态分布的均值和标准差。

二、分布拟合在实际问题中,我们经常需要将一组实验数据与某种理论概率分布进行拟合,以揭示数据背后的规律。

在Matlab中,可以利用hist函数快速绘制直方图,并借助一些函数进行分布拟合。

Matlab中的随机数生成方法与应用案例

Matlab中的随机数生成方法与应用案例引言:随机数在数学、统计学和计算机科学等领域中具有重要的应用价值。

在大数据分析、模拟实验以及密码学等领域,随机数生成方法的选择和应用至关重要。

Matlab作为一种常用的科学计算软件,提供了多种随机数生成方法和函数。

本文将介绍Matlab中常用的随机数生成方法,以及如何在实际应用中选择合适的方法来满足需求。

一、Matlab中的随机数生成方法1. 均匀分布随机数生成方法Matlab中的`rand`函数可以生成一个0到1之间的均匀分布的随机数。

该函数返回的随机数是一个矩阵,可以通过设定参数来控制矩阵的大小。

```matlabx = rand(1, 100); % 生成一个1行100列的矩阵,每个元素在0到1之间```2. 高斯分布随机数生成方法Matlab中的`randn`函数可以生成服从均值为0,方差为1的标准正态分布的随机数。

该函数返回的随机数也是一个矩阵,大小也可以通过参数进行控制。

```matlabx = randn(1, 100); % 生成一个1行100列的矩阵,每个元素满足标准正态分布```3. 二项分布随机数生成方法Matlab中的`binornd`函数可以生成二项分布的随机数。

该函数需要指定实验次数和成功概率,并返回符合二项分布的随机数。

```matlabx = binornd(10, 0.5); % 进行10次实验,每次成功的概率为0.5,返回符合二项分布的随机数```4. 泊松分布随机数生成方法Matlab中的`poissrnd`函数可以生成泊松分布的随机数。

该函数需要指定均值,并返回符合泊松分布的随机数。

```matlabx = poissrnd(5); % 均值为5的泊松分布随机数```5. 均匀整数分布随机数生成方法Matlab中的`randi`函数可以生成指定范围内的均匀分布的整数随机数。

该函数需要指定随机数的范围和生成的矩阵大小。

第5章-窄带随机过程


RXXˆ () RXXˆ ()
RXXˆ (0) 0
互相关函数是奇函数
ˆ (t )正交 意味着 X (t )与 X
17
(9)偶函数的希尔伯特变换为奇函数,奇函数的希 尔伯特变换为偶函数 2015/6/2
Hilbert变换

常用变换
xt
cos 2 f0 t sin 2 f0 t
X () X () j ( j sgn()) X () (1 sgn()) X () =2 X ( w)U ( w) 2 X ( w), W 0 W 0 0, 即,解析信号的频谱在负频率部分为0,在正频率部分是 是信号的两倍。
2015/6/2 22
解析信号的特点2:解析信号频谱与复包络频谱
2015/6/2
6
希尔伯特变换 (Hilbert Transform)
1. 定义 :
正变换定义:
ˆ (t ) H [ x(t )] x
反变换:
ˆ ( ) x ˆ (t )] x(t ) H [x d t 1 1 ˆ (t )] x ˆ (t ) H [x t
2015/6/2 20

解析信号的性质(2)
4) 解析信号 x(t ) 的能量为其实信号 x (t)能量的2倍
x1 t x 2 t 0 5) 提示:利用性质2)和3) x t x2 t 0 1 6) 已知实函数 x t , 求其解析信号的方法
x( t ) A( t )cos 2 f 0 t x( t ) A t e j 2 f0t
2015/6/2
注:A t 为低通信号,其带宽W f 0 .
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

随机过程数学建模分析 任何通信系统都有发送机和接收机,为了提高系统的可靠性,即输出信噪比,通常在接收机的输入端接有一个带通滤波器,信道内的噪声构成了一个随机过程,经过该带通滤波器之后,则变成了窄带随机过程,因此,讨论窄带随机过程的规律是重要的。 一、窄带随机过程。 一个实平稳随机过程X(t),若它的功率谱密度具有下述性质:

中心频率为ωc,带宽为△ω=2ω0,当△ω<若随机过程的功率谱满足该条件则称为窄带随机过程。若带通滤波器的传输函数满足该条件则称为窄带滤波器。随机过程通过窄带滤波器传输之后变成窄带随机过程。 图1 为典型窄带随机过程的功率谱密度图。若用一示波器来观测次波形,则可看到,它接近于一个正弦波,但此正弦波的幅度和相位都在缓慢地随机变化,图2所示为窄带随机过程的一个样本函数。 图1 典型窄带随机过程的功率谱密度图 图2 窄带随机过程的一个样本函数 二、窄带随机过程的数学表示

1、用包络和相位的变化表示 由窄带条件可知,窄带过程是功率谱限制在ωc附近的很窄范围内的一个随机过程,从示波器观察(或由理论上可以推知):这个过程中的一个样本函数(一个实现)的波形是一个频率为ƒc且幅度和相位都做缓慢变化的余弦波。 写成包络函数和随机相位函数的形式: X(t)=A(t)*cos[ωct+ Φ(t)] 其中:A(t)称作X(t)的包络函数; Φ(t)称作X(t)的随机相位函数。包络随时间做缓慢变化,看起来比较直观,相位的变化,则看不出来。 2、莱斯(Rice)表示式 任何一个实平稳随机过程X(t)都可以表示为: X(t)=Ac(t) cosωct-AS(t) sinωct 其中同相分量: Ac(t)= X(t) cosφt= X(t) cosωct+ sinωct=LP[X(t) *2cosωct] 正交分量: AS(t) = X(t)sinφt= cosωct— X(t) sinωct= LP[-X(t) *2sinωct] (LP[A]表示取A的低频部分)。Ac(t)和AS(t)都是实随机过程,均值为0,方差等于X(t)的方差。 三、窄带随机过程仿真建模要求 1、用Matlab 编程仿真窄带随机信号:X(t)=(1+ A(t))*cos(ωct+φ)+n(t)。 其中包络A(t)频率为1KHz,幅值为l V。载波频率为:4KHz,幅值为l V,φ是一个固定相位,n(t)为高斯白噪声,采样频率设为16KHz。实际上,这是一个带有载波的双边带调制信号。 2、计算窄带随机信号的均值、均方值、方差、概率密度、频谱及功率谱密度、相关函数,用图示法来表示。 3、窄带系统检测框图如图3所示。 图3 窄带系统检测框图 4、低通滤波器设计: 低通滤波器技术要求:通带截止频率1KHz,阻带截止频率2KHz。过渡带:1KHz,阻带衰减:>35DB,通带衰减:<1DB,采样频率:≤44.1KHz 5、计算a点、b点、Ac(t)、AS(t)、y(t)的均值、均方值、方差、频谱及功率谱密度、相关函数,用图示法来表示。 四、建模仿真过程及结果(程序见附件) 1、根据要求得到X(t)的表达式: x= (l+a) .*cos (2*pi*4000*t+2) +noisy/10; 其中:noisy为高斯白噪声,由wgn函数生成, a=cos (2*pi*l000*t), 均值:Ex=mean (x), 方差:Dx=var (x), 计算可得:X(t)的均值为0.0019, X(t)的方差为0.7590。 如图4所示,其中蓝色线为X(t)一个样本的时域波形,红色点连成的线为X(t)的均值,绿色点连成的线为X(t)的方差。 图4 窄带随机信号时域波形 2、求X(t)的概率密度,方法是将最大最小区间分成14等份,然后分别计算各个

区间的个数,如图02中柱形条所示,利用曲线拟合, 得到合适的概率密度函数。 为了得到光滑的曲线,利用了多项式拟合,经过测试,9次拟合曲线比较符合要求,获得的曲线如图5中曲线所示: 图5 X(t)的概率分布密度函数 3、对X(t)进行频谱分析,在Matlab中,利用fft函数可以很方便得求得X(t)的频谱,然后用abs和angle函数求得幅值和相位,画出图像如图6所示: 图6 X(t)的频谱图 4、求X(t)的自相关函数,用xcorr函数求出自相关序列,得到X(t)自相关函数的

时域波形,如图7所示。 图7 X(t)自相关函数的时域波形 5、对X(t)自相关函数进行fft变换,得到X(t)的功率谱密度,如图8所示。 图8 X(t)的功率谱密度 6、建立滤波器,建立一个巴特沃思滤波器,对产生的x(t)进行检测。滤波器的幅

度谱和相位谱所示: 图9 地通滤波器的幅度谱和相位谱 7、求Ac(t)的统计特性,Ac(t)为X(t) *2cosωct通过低通滤波器的信号,

Ac(t)的均值Eh = -0.4075 4(带有直流分量), Ac(t)的均方值是E2h =0.2458 Ac(t)的方差Dh = 0.0798 Ac(t)的波形如图10、图11所示: 图10 Ac(t)的时域波形图和频谱图 图11 Ac(t)的自相关函数的时域波形图和Ac(t)的功率谱密度 8、求AS(t)的统计特性,AS(t)为X(t) *2cosωct通过低通滤波器的信号,

AS(t)的均值Eh =0.8972(带有直流分量), AS(t)的均方值是E2h = 1.1565 AS(t)的方差Dh = 0.3518 AS(t)的波形如图13、图14所示: 图13 AS(t)的时域波形图和频谱图 图14 AS(t)的自相关函数的时域波形图和AS(t)的功率谱密度 9、求出Y(t)的统计特性,Y (t)=Ac(t) cosωct-AS(t) sinωct,

其统计特性如下 输出信号Y(t)的均值Eh = -4.4011e-004s 输出信号Y(t)的均方值E2h = 3.0280 输出信号Y(t)的方差Dh = 3.0303 Y(t)的仿真图形如图15、图16所示。 图15 Y(t)的时域波形图和频谱图 图16 Y(t)的自相关函数的时域波形图和Y(t)的功率谱密度

附件: clc fs=16000; %设定采样频率 N=1300; n=0:N-1; %取的样本点数 t=n/fs; %获得以1/16000为时间间隔采样序列 noisy=wgn(1,N,0); %产生高斯白噪声 a=cos(2*pi*1000*t); %获取A(t)的采样点 x=(1+a).*cos(2*pi*4000*t+2)+noisy/10; %获取x(t)的采样点 %以t为横坐标画出x(t)的时域图型 figure(1); subplot(2,1,1); plot(n,x); axis([0 140 -3 3]);xlabel('采样点');ylabel('X(t)/V');title('窄带随机信号波形');grid on; %求X(t)的统计特性 并画出来 disp('X(t)的均值为'); Ex=mean(x); disp(Ex);%求X(t)均值 hold on; plot(n,Ex,'r.'); disp('X(t)的方差为');Dx=var(x); disp(Dx);%求x(t)方差 hold on; plot(n,Dx,'g.'); %画出X(t)的概率分布函数 each=linspace(min(x),max(x),14); %将最大最小区间分成14等份,然后分别计算各个区间的个数 nr=hist(x,each); %计算各个区间的个数 nr=nr/length(x); %计算各个区间的个数归一化 subplot(2,1,2); p=polyfit(each,nr,9); %画出概率分布直方图 bar(each,nr); %多项式拟合 hold on; plot(each,nr,'g') eachi=-2:0.1:2; nri=polyval(p,eachi); plot(eachi,nri,'r') axis tight;title('X(t)概率密度分布');xlabel('X(t)');ylabel('P(x)');grid on; %对X(t)进行频谱分析 Fx=fft(x,N); %对x(t)进行fft变换,在0~16000区间内得到2N-1个频率值 magn=abs(Fx); %求x(t)幅值 xangle=angle(Fx); %求X(t)相位 labelang=(0:length(x)-1)*16000/length(x); %在0~16000区间内求横坐标刻度 figure(2); plot(labelang,magn*10); %在0~16000区间内做频谱和相位图 axis([0 16000 -0.5 600]); xlabel('频率/Hz');ylabel('幅值');title('X(t)频谱图');grid on; %求X(t)的自相关函数 [c,lags]=xcorr(x,'coeff'); %求出自相关序列 figure(3); subplot(2,1,1); plot(lags/fs,c); %在时域内画自相关函数 axis tight; xlabel('T');ylabel('Rx(T)');title('X(t)的自相关函数');grid on; %求X(t)的功率谱密度 long=length(c); Sx=fft(c,long); labelx=(0:long-1)*2*pi; plot_magn=10*log10(abs(Sx)); subplot(2,1,2); plot(labelx,plot_magn); %画功率谱密度 axis tight;xlabel('w');ylabel('Sx(w)');title('X(t)的功率谱密度');grid on; %窄带系统检测 z1=2.*cos(2*pi*4000*t); z2=-2.*sin(2*pi*4000*t); Ac=z1.*x; %滤波后生成Ac(t) As=z2.*x; %滤波后生成As(t) y=Ac.*cos(2*pi*4000*t)-As.*sin(2*pi*4000*t); %滤波器设计 f_p=1000;f_s=1600;R_p=1;R_s=35; %设定滤波器参数; 通、阻带截止频率,通、阻带衰减 Ws=2*f_s/fs;Wp=2*f_p/fs; %频率归一化 [n,Wn]=buttord(Wp,Ws,R_p,R_s); %采用巴特沃思滤波器 [b,a]=butter(n,Wn); %求得滤波器传输函数的多项式系数 figure(4); [H,W]=freqz(b,a); %求得滤波器传输函数的幅频特性 subplot(2,1,1); plot(W*fs/(2*pi),abs(H)); %在0~2pi区间内作幅度谱 title('低通滤波器幅度谱'); grid on; subplot(2,1,2); plot(W*fs/(2*pi),angle(H)); %在0~2pi区间内作相位谱 title('低通滤波器相位谱'); grid on; %求Ac(t)滤波后的统计特性 mc=filter(b,a,Ac); %上支路通过滤波器 Ac(t) disp('Ac(t)的均值');Eh=mean(mc) %求Ac(t)的均值 disp('Ac(t)的均方值是');E2h=mc*mc'/N %求Ac(t)的均方值 disp('Ac(t)的方差');Dh=var(mc) %求Ac(t)的方差 %画Ac(t)的时域波形 figure(6); subplot(2,1,1); n=0:N-1; plot(n,mc); axis([0 300 -1 1]);xlabel('采样点');ylabel('幅值');title('Ac(t)的时域波形');grid on; %画Ac(t)的频谱图 yc=fft(mc,length(mc)); %对Ac(t)进行fft变换 longc=length(yc); %求傅里叶变换后的序列长度 labelx=(0:longc-1)*16000/longc; magnl=abs(yc); %求Ac(t)的幅值 subplot(2,1,2); plot(labelx,magnl); %画Ac(t)的频谱图 axis tight; xlabel('频率(Hz)'); ylabel('幅值'); title('Ac(t)频谱图'); grid on; %求Ac(t)的自相关函数 [c1,lags1]=xcorr(mc,'coeff'); %求出Ac(t)的自相关序列 figure(7); subplot(2,1,1); plot(lags1/fs,c1); %在时域内画Ac(t)的自相关函数 xlabel('T');ylabel('Rx(T)');axis tight;

相关文档
最新文档