matlab中随机信号的产生
- 格式:docx
- 大小:191.57 KB
- 文档页数:4
clc;clear all;Signal_1=rand(1,2000);%产生随机信号 Signal_1Signal_2=rand(1,2000);%产生随机信号 Signal_2%Signal_3=[Signal_1;Signal_2];n=length(Signal_1);Signal_1_2=Signal_1.^2;% 计算 Signal_1 的每个元素的平方Signal_2_2=Signal_1.^2;Signal_1_aver1=sum(Signal_1)/n; % 利用定义计算Signal_1 的均值Signal_1_aver2=mean(Signal_1);% 利用mean函数计算Signal_1的均值Signal_1_2_aver=sum(Signal_1_2)/n; %计算Signal_1_2 的均值Signal_2_aver=mean(Signal_2);for i=1:nSignal_1_3(1,i)=Signal_1(1,i)-Signal_1_aver1;end%产生一个新的矩阵,即 Signal_1的每个元素减去Signal_1的均值Signal_1_3_aver=sum(Signal_1_3.^2)/n;%公式(1.2.9)计算Signal_1_3的方差,也是Signal_1的方差Signal_1_D2=Signal_1_2_aver-Signal_1_aver1^2;%公式(1.2.10),得结果与公式(1.2.9)一样D=std(Signal_1);%计算Signal_1的标准差Signal_1_D1=std(Signal_1)^2;%通过先求向量的标准差再求平方,算得的结果与直接用函数var算到的结果相同,也是Signal_1的方差Signal_1_D3=var(Signal_1);% 利用var函数求向量Signal_1的方差%R_Signal_1=xcorr(Signal_1);%用库函数xorr求Signal_1自相关函数%R_Signal_2=xcorr(Signal_2);%用用库函数xorr求Signal_2自相关函数%Sig1_Sig2_C=cov(Signal_3);R1_Signal_1_Signal_2=cov(Signal_1,Signal_2);R2_Signal_1_Signal_2=mean((Signal_1-Signal_1_aver2).*(Signal_2-Signal_2 _aver));R3_Signal_1_Signal_2=mean(Signal_1.*Signal_2)-Signal_1_aver2*Signal_2_a ver;R_Signal_1=mean(Signal_1_2);R_Signal_2=mean(Signal_2_2);C=R_Signal_1-Signal_1_aver2*Signal_1_aver2;subplot(3,2,1);plot(Signal_1);title('随机信号Signal_1');axis([0 2000,-1 2]);subplot(3,2,2);plot(Signal_2);title('随机信号Signal_2');axis([0 2000,-1 2]);subplot(3,2,3);%将画布分为 2行2列,在第1行第1列画Signal_1_R自相关函数,并写上标题Signal_1自相关函数plot(Signal_1_R);title('Signal_1自相关函数');subplot(3,2,4);%将画布分为 2行2列,在 第1行第2列画Signal_2_R 自相关函数,并写上标题Signal_2自相关函数plot(Signal_2_R);title('Signal_2自相关函数');subplot(3,2,5);plot(Sig1_Sig2_C);title('随机信号Signal_1,Signal_1协方差');axis([0 2000,-1 1]);0500100015002000-1012随机信号Signal 10500100015002000-1012随机信号Signal 20100020003000400005001000Signal 1自相关函数0100020003000400005001000Signal 2自相关函数0500100015002000-101随机信号Signal 1,Signal 1协方差。
随机信号分析专业:电子信息工程班级:电子111姓名:***学号:**********指导老师:***随机信号及其自相关函数和功率谱密度的MATLAB实现引言:现代信号分析中,对于常见的具有各态历经的平稳随机信号,不可能用清楚的数学关系式来描述,但可以利用给定的N个样本数据估计一个平稳随机信号的功率谱密度叫做功率谱估计(PSD)。
它是数字信号处理的重要研究内容之一。
功率谱估计可以分为经典功率谱估计(非参数估计)和现代功率谱估计(参数估计)。
通过实验仿真可以直观地看出以下特性:(1)功率谱估计中的相关函数法和周期图法所得到的结果是一致的,其特点是离散性大,曲线粗糙,方差较大,但是分辨率较高。
(2)平均周期图法和平滑平均周期图法的收敛性较好,曲线平滑,估计的结果方差较小,但是功率谱主瓣较宽,分辨率低。
这是由于对随机序列的分段处理引起了长度有限所带来的Gibbs现象而造成的。
(3)平滑平均周期图法与平均周期图法相比,谱估值比较平滑,但是分辨率较差。
其原因是给每一段序列用适当的窗口函数加权后,在得到平滑的估计结果的同时,使功率谱的主瓣变宽,因此分辨率有所下降。
摘要:功率谱估计(PSD)的功率谱,来讲都是重要的,是数字信号处理的重要研究内容之一。
功率谱估计可以分为经典谱估计(非参数估计)和现代谱估计(参数估计)。
前者的主要方法有BTPSD 估计法和周期图法;后者的主要方法有最大熵谱分析法(AR 模型法)、Pisarenko 谐波分解法、Prony 提取极点法、其Prony 谱线分解法以及Capon 最大似然法。
中周期图法和AR 模型法是用得较多且最具代表性的方法。
Matlab 是目前极为流行的工程数学分析软件,在它的SignalProcessingToolbox 中也对这两个方法提供了相应的工具函数,这为我们进行工程设计分析、理论学习提供了相当便捷的途径。
关键词:随机信号 自相关系数 功率谱密度实验原理:随机信号X(t)是一个随时间变化的随机变量,将X (t )离散化,即以Ts 对X (t )进行等间隔抽样,得到随机序列X(nTs),简化为X(n)。
随机信号分析与处理实验报告1实验一熟悉MATLAB的随机信号处理相关命令一、实验目的1、熟悉GUI格式的编程及使用。
2、掌握随机信号的简单分析方法3、熟悉语音信号的播放、波形显示、均值等的分析方法及其编程二、实验原理1、语音的录入与打开在MATLAB中,[y,fs,bits]=wavread('11',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。
[N1 N2]表示读取从N1点到N2点的值。
2、幅值对于随机信号的频域描述,常使用功率谱,它是表征信号的能量随着频率的分布情况。
当然,功率谱也可用于周期信号和瞬变信号的频域描述。
周期函数的幅值谱:一般周期信号均由一个直流分量、一个基波(正弦波)和无限个谐波(正弦波)所组成,各次谐波的频率是基波频率的整数倍,基波、各次谐波的幅值Ao和初相角是各不相同的,将幅值与频率的函数关系成为幅值谱。
3、语音信号自相关性三、实验结果与分析1、信号原始波形2、FFT变换利用fft变换,对语音信号进行进行分析,可以看出所能发出的音调应该是稳定的或是在一定的范围内浮动3、语音信号相位通过相位处理,将语音信号的声门激励信息及声道响应分别离开来4、自相关函数2004006008001000120014001600180000.51自相关函数根据自相关函数可以看出语音信号的周期。
自相关函数检测出淹没在随机噪声干扰中的信号,随机信号的自功率谱等于它的自相关函数的傅里叶变换。
自相关函数是描述随机信号X(t)在任意两个不同时刻t1,t2的取值之间的相关程度。
从图中可以看出,当t1=t2=900时,信号的自相关性最强。
5、语音自协方差函数从图中原始信号的自协方差函数与原始信号的自相关函数在波形上相差不大,原因是121212(,)(,)()()X X X X K t t R t t m t m t =-,此时12t t =,通过计算,可以得到1()X m t ,2()X m t 的值很小,所以得到的自协方差函数波形是正确的。
随机信号分析实验报告——基于MATLAB语言姓名:_班级:_学号:专业:目录实验一随机序列的产生及数字特征估计 (2)实验目的 (2)实验原理 (2)实验内容及实验结果 (3)实验小结 (6)实验二随机过程的模拟与数字特征 (7)实验目的 (7)实验原理 (7)实验内容及实验结果 (8)实验小结 (11)实验三随机过程通过线性系统的分析 (12)实验目的 (12)实验原理 (12)实验内容及实验结果 (13)实验小结 (17)实验四窄带随机过程的产生及其性能测试 (18)实验目的 (18)实验原理 (18)实验内容及实验结果 (18)实验小结 (23)实验总结 (23)实验一随机序列的产生及数字特征估计实验目的1.学习和掌握随机数的产生方法。
2.实现随机序列的数字特征估计。
实验原理1.随机数的产生随机数指的是各种不同分布随机变量的抽样序列(样本值序列)。
进行随机信号仿真分析时,需要模拟产生各种分布的随机数。
在计算机仿真时,通常利用数学方法产生随机数,这种随机数称为伪随机数。
伪随机数是按照一定的计算公式产生的,这个公式称为随机数发生器。
伪随机数本质上不是随机的,而且存在周期性,但是如果计算公式选择适当,所产生的数据看似随机的,与真正的随机数具有相近的统计特性,可以作为随机数使用。
(0,1)均匀分布随机数是最最基本、最简单的随机数。
(0,1)均匀分布指的是在[0,1]区间上的均匀分布, U(0,1)。
即实际应用中有许多现成的随机数发生器可以用于产生(0,1)均匀分布随机数,通常采用的方法为线性同余法,公式如下:,序列为产生的(0,1)均匀分布随机数。
定理1.1若随机变量X 具有连续分布函数,而R 为(0,1)均匀分布随机变量,则有2.MATLAB中产生随机序列的函数(1)(0,1)均匀分布的随机序列函数:rand用法:x = rand(m,n)功能:产生m×n 的均匀分布随机数矩阵。
(2)正态分布的随机序列函数:randn用法:x = randn(m,n)功能:产生m×n 的标准正态分布随机数矩阵。
使用Matlab技术进行随机信号分析的基本步骤随机信号分析是信号与系统领域中的一个重要研究课题,它主要涉及到信号的时间特性、频率特性、概率特性等方面的分析。
而使用Matlab技术进行随机信号分析,则是一种十分高效且常见的方法。
在本文中,我们将向您介绍使用Matlab 技术进行随机信号分析的基本步骤。
第一步:信号生成随机信号的分析首先需要产生实验信号。
Matlab提供了丰富的信号生成函数,例如rand、randn等,可以生成均匀分布的随机信号、高斯分布的随机信号等。
根据所需要分析的信号类型和特性,我们可以选择适合的函数进行信号生成。
第二步:采样和量化分析随机信号之前,我们需要对其进行采样和量化。
采样是将连续信号转化为离散信号的过程,而量化则是将连续信号的振幅值转化为离散信号的过程。
Matlab 提供了相应的函数,例如downsample和quantize,可以实现信号的采样和量化操作。
第三步:时域分析时域分析是对信号在时间域上的特性进行分析。
常用的时域分析方法包括信号的均值、方差、自相关函数、互相关函数等。
在Matlab中,我们可以使用mean、var、xcorr等函数,对随机信号的时域特性进行计算和分析。
第四步:频域分析频域分析是对信号在频率域上的特性进行分析。
通过对随机信号进行傅里叶变换,我们可以得到信号的频谱特性。
Matlab中提供了fft函数,可以用于实现傅里叶变换。
通过对傅里叶变换结果进行幅度谱和相位谱的计算,我们可以更全面地了解信号在频率域上的特性。
第五步:概率分布分析概率分布分析是对信号的概率特性进行分析。
在随机信号分析中,常见的概率分布包括均匀分布、高斯分布、泊松分布等。
Matlab中提供了相应的概率分布函数,我们可以使用这些函数计算信号的概率密度函数、累积分布函数等。
第六步:建立模型和拟合通过对信号进行分析,我们可以建立信号的数学模型,并利用拟合技术将实际信号与模型进行比较。
Matlab中提供了polyfit、lsqcurvefit等函数,可以用于信号的模型建立和拟合。
Matlab随机数产生的问题2009-02-13 08:13这2天发现这个问题讨论较多,所以就搜索了一些资料。
发现自己之前的理解有些很有问题,同时欢迎大家继续讨论。
先澄清一下几个容易弄错的地方(也不一定全对)(1)用计算机产生的是“伪随机数”。
用投色子计数的方法产生真正的随机数 , 但电脑若也这样做 , 将会占用大量内存 ; 用噪声发生器或放射性物质也可产生真正的随机数 , 但不可重复 . 而用数学方法产生最适合计算机 , 这就是周期有限 , 易重复的” 伪随机数”(2)随机数的产生需要有一个随机的种子,因为用计算机产生的随机数是通过递推的方法得来的,必须有一个初始值。
(3)用同一台电脑,且在初始值和递推方法相同的情况下,可以产生相同的随机序列(由于以前每次使用randn或者rand得到都是不同值,所以曾经误以为相同的seed无法产生相同的序列)[size=2][color=red][b]一 matlab里产生随机数的方法[/b][/color][/size] matlab里和随机数有关的函数:(1) rand:产生均值为0.5、幅度在0~1之间的伪随机数(2) randn:产生均值为0、方差为1的高斯白噪声(3) randperm(n):产生1到n的均匀分布随机序列(4) normrnd(a,b,c,d):产生均值为a、方差为b大小为cXd的随机矩阵还有很多的扩展函数,不再一一列出。
不过他们都调用的是rand或者randn函数,由此可见在matlab里rand和randn是产生随机数的关键所在。
看来只有看他们的源文件了function [varargout] = randn(varargin)%%%help 文档的内容略去%%%if nargout == 0builtin('randn', varargin{:});else[varargout{1:nargout}] = builtin('randn', varargin{:});end从这里也看不出到底是怎么产生的,就只看到builtin。
实验一随机信号的仿真与特征分析一.【实验目的】:1.利用计算机仿真随机信号,计算其数字特征,以此加深对满足各种分布的随机信号的理解。
2.熟悉常用的信号处理仿真软件平台:MATLAB二.【实验环境】1.硬件实验平台:通用计算机2.软件实验平台:MATLAB 2014A三.【实验任务】1.仿真产生满足各种概率分布的仿真随机信号;2.自己编写程序计算各种概率分布的仿真随机信号的各种特征;3.撰写实验报告。
四.【实验原理】1.随机信号的产生和定义随机信号是随机变量在时间上推进产生的过程量,它同时具有过程性和不确定性。
定义如下:给定参量集T与概率空间(Ω, F, P),若对于每个Tt∈,都有一个定义在(Ω, F, P)上的实随机变量X(t)与之对应,就称依赖于参量t的随机变量族{}TttX∈),(为一(实)随机过程或随机信号。
2.高斯分布随机信号统计分布是正态分布(高斯分布)的随机信号为高斯分布随机信号。
高斯分布的随机变量概率密度函数满足下式:22()21()x mXf x eσ-=3.均匀分布随机信号统计分布是均匀分布的随机信号为均匀分布随机信号。
均匀分布的随机变量概率密度函数满足下式:1(),X f x a x b b a=<<-4. 正弦随机信号给定具有某种概率分布的振幅随机变量A 、角频率随机变量Ω与相位随机变量Θ,(具体概率分布与特性视应用而定),以(时间)参量t 建立随机变量:)sin(),(Θ+Ω==t A s t W W t 。
于是,相应于某个参量域T 的随机变量族{}T t W t ∈,为正弦随机信号(或称为正弦随机过程)。
5. 贝努里随机信号贝努里随机变量X(s)基于一个掷币实验(s 表示基本结果事件):1表示s 为正面,0表示s 不为正面;s 不为正面的概率为P[X(s)=1]=p ,s 为正面的概率为P[X(s)=0]=q ,其中p+q=1。
若无休止地在t=n (n=0, 1, 2, …)时刻上,独立进行(相同的)掷币实验构成无限长的随机变量序列:,...}...,,,{,321n X X X X ,其中n X 与n 和s 都有关,应记为X(n,s),于是,⎩⎨⎧≠=====正面时刻,在正面时刻,在,,s n t s n t s n X X n 01),( 而且有概率:q s n X P p s n X P ====]0),([]1),([其中, p+q=1。
Matlab 中随机信号的产生
在matlab 编程中,我们所能用到的用于产生随机信号的函数有三:Rand, randn,randi 下面我们详细的了解一下这三个函数。
1. Rand 功能是生产均匀分布的伪随机数,并且所生成的伪随机数分布在(0-1); 主要语法:rand (m ,n )生成m 行n 列的均匀分布的伪随机数
Rand (m,n.’double’)生成制定精度的均匀分布的伪随机数,参数还可以是’single’; Rand(randStream,m,n)利用指定的randStream 生成伪随机数
2. Randn 生成标注正态分布的伪随机数(均值为0,方差为1) 语法同上;
3. Randi 生成均匀分布的伪随机整数
主要语法:randi(iMax)在开区间(0,iMax )生成均匀分布的伪随机整数
Randi(iMax,m,n) 在开区间(0,iMax )生成m ×n 型随机矩阵
r= randi([iMin,iMax],m,n)在开区间(iMin,iMax )生成m ×n 型随机矩阵 下面我们来看看具体的例子:
1,Rand
散点图:xh=rand(1,2500);
plot(xh)
概率分布图:xh=rand(1,25000);
hist(xh,2000)
00.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
2,Randn
散点图:xh=randn(1,400000);
plot(xh)
概率分布图:xh=randn(1,400000);
hist(xh,2000)
00.51 1.52 2.53 3.5
4x 105-5-4
-3
-2
-1
1
2
3
4
5
3,Randi
散点图:r= randi([12,214],1,144);
plot(r)
概率分布图:r= randi([12,214],1,144);
hist(r,10000)
对于随机种子,伪随机数的重复生成,在正常情况下每次调用相同指令生成的伪随机数是不同的
例如:rand(1,4)
rand(1,4)
输出结果为:ans = 0.0428 0.2402 0.0296 0.0398
ans = 0.7753 0.4687 0.3378 0.0074
在一些特殊的情况下我们会用到相等的随机数,那我们该如何呢使两个语句生成的随机数相等呢?在Matlab中rand 、randn,和randi 从一个基础的随机数流中得到随机数,叫做默认流。
我们可以通
过@RandStream类得到默认流的句柄从而控制随机数的生成。
state属性是发生器的内部状态,我们可以保存默认流的状态:
myState=defaultStream.State;
利用myState我们可以恢复默认流状态重新生成前面的结果:
myState=defaultStream.State;
A=rand(1,100);
defaultStream.State=myState;
B=rand(1,100);
isequal(A,B)
ans = 1
我们也可以直接使用@RandStream类的reset静态方法重置种子状态来获取相同的随机生成序列,下面是示例代码:
stream = RandStream.getDefaultStream;%获取默认的随机种子
reset(stream);%重置
rand(stream,1,3)
reset(stream);%重置
rand(stream,1,3)
matlab的输出为:
ans = 0.814723686393179 0.905791937075619 0.126986816293506
ans = 0.814723686393179 0.905791937075619 0.126986816293506
可以看出生成的随机码是相等的,这样可以用于重复实验。