传递函数matlab实验(10篇)
1.传递函数matlab实验 篇一
传递函数的测量方法
一.测量原理
设输入激励为X(f),系统(即受试的试件)检测点上的响应信号,即通过系统后在该响应点的输出为Y(f),则该系统的传递函数H(f)可以用下式表示:
H(f)Y(f)X(f)
如果,设输入激励为X(f)为常量k,则该系统的传递函数H(f)可以用下式表示:
H(f)kY(f)
也就是说,我们在检测点上测到的响应信号,就是该系统的传递函数。二.测量方法
1.将控制加速度传感器固定在振动台的工作台面上。注意:如果试件是通过夹具安装在振动台 的工作台面上,则控制加速度传感器应该安装在夹具与试件的连接点附近。如果试件与夹具的连接是通过多个连接点固定,则应该选择主要连接点,或者采取多点控制的方法。2.将测量加速度传感器固定在选择的测量点(即响应点)上。
3.试验采用正弦扫频方式,试验加速度选择1g,扫频速率为0.5 Oct/min(或者更慢一些),试
验频率范围可以选择自己需要的频率范围。在试验中屏幕上显示的该激励曲线(也就是控制曲线)应该是一条平直的曲线。这就保证对被测量试件来说是受到一个常量激励。
注意:在测量传递函数时,最好是采用线性扫频。因为,线性扫频是等速度扫频,这对于高频段共振点的搜索比较好,能大大减少共振点的遗漏。而对于对数扫频来说,在低频段,扫频速度比较慢;在高频段。扫频速度就比较快,这就有可能遗漏共振点。不少人之所以喜欢在测量传递函数时采用对数扫频,是因为对于同样频率段的扫频来说,线性扫频要比对数扫频使用的时间要多。
4.通过控制仪,选择不同的颜色在屏幕上显示响应曲线。该响应曲线就是系统的频响曲线,在这里也是该系统的传递函数曲线。注意:该控制仪可以在屏幕上同时显示好几条曲线。三.其他方法 1.测量原理
在闭环反馈控制时,为了保证控制点上被控制的物理量不变,当被控制的试件由于本身的频率特性而将输入的激励信号放大时,从控制点上检测到的响应信号也将随着变大,也就是反馈信号变大。由于,通常都是采取负反馈控制,那么,反馈信号与输入信号综合后再输入到系统中,就会使控制点上的响应信号变小,而返回到原来的量级。
反过来,如果被控制的试件由于本身的频率特性而将输入的激励信号缩小时,从控制点上检测到的响应信号也将随着变小,也就是反馈信号变小,那么,反馈信号与输入信号综合后再输入到系统中,就会使控制点上的响应信号变大,以保持原来的量级不变。
如果我们保持控制点的振动量级不变,则驱动到功率放大器的信号,即控制仪的输出信号必将随着被测试件的频率特性的变化而变化,这样。我们就间接得到了被测件的传递函数。如下图所示,驱动信号曲线与传递函数曲线对于控制信号曲线成为镜像对称。
需要注意的是,此时我们得到的传递函数实际上是振动台与被测试件的复合传递函数。由于振动台的传递函数是已知的,所以,复合传递函数上的峰谷点,除去振动台的峰谷点外,就是被测试件的了。而且,振动台本身传递函数曲线是比较光滑的;所以,复合传递函数的变化,基本上反映了被测试件传递函数的变化。2.测量方法
(1)将控制加速度传感器固定在振动台的工作台面上。如果试件是通过夹具安装在振动台的工作台面上,则控制加速度传感器应该安装在夹具与试件的连接点附近。如果试件与夹具的连接是通过多个连接点固定,则应该选择主要连接点,或者采取多点控制的方法。注意:此时得到的复合传递函数中应该包括夹具的频率特性。
(2)试验采用正弦扫频方式,试验加速度选择1g,扫频速率为0.5 Oct/min(或者更慢一些);如果采用线性扫频,则扫频速度可采用1 Hz/s;试验频率范围可以选择自己需要的频率范围。此时,在试验中屏幕上显示的控制曲线应该是一条平直的曲线。这就保证对被测量试件来说处在一个常量控制状态中。
(3)通过控制仪,选择不同的颜色在屏幕上显示驱动曲线。该驱动曲线翻转180°,就是系统的频响曲线,也就是该系统的复合传递函数曲线。
(4)从上面的分析可以看到,用这种方法得到的传递函数是振动台和被测试件的复合传递函数。如果有夹具的话,还要包括夹具的传递函数,所以,这种方法只是大概地了解被测试件的频率响应情况。
由于,这种方法比较简单,所以,许多试验人员还是经常采用这种方法来估测被测试件的传递函数。当然,被测试件的主要峰谷点还是能够测出来的。
2.传递函数matlab实验 篇二
1 房间辐射传递函数实验原理
仅对绝热房间某一壁面加热,以此作为房间唯一热源。高温加热面通过辐射热传递将引起各非加热面壁温升高,各面接受辐射得热后,部分辐射得热被房间围护结构吸收和贮存,另一部分则与空气进行对流换热,形成房间辐射负荷。即在绝热房间内,定义各非加热面的净辐射得热量之和为房间辐射得热QR,而各非加热面接受高温加热面辐射得热后产生的对流得热则为该面的辐射负荷,定义房间辐射负荷Qi,d为各非加热面的对流得热量( 辐射负荷) 之和,该房间辐射负荷可通过实验结果计算得到。房间辐射传递函数则可由辐射负荷根据最小二乘法[8]拟合获得。
1. 1 房间辐射得热
考虑到房间各面进行辐射热传递为多次反射和吸收,故采用有效辐射法计算房间辐射换热量。对于一个封闭的空间,某表面的有效辐射为本身辐射和其它表面投射辐射的反射之和,即房间各面有效辐射换热量Ji( i = 1,2…6) 可采用下式[9]计算
式中σb———黑体辐射常数
Tiτ———τ时刻壁面i的温度/℃;
Jiτ———τ时刻壁面i的有效辐射/W·m- 2;
εi———壁面i的发射率;
Xi,i———壁面i对于壁面i的角系数。
根据式( 1) ~ 式( 3) 可计算房间各面的净辐射得热量,其计算如式( 4)
式中qriτ———τ时刻壁面i的净辐射得热量/W,( i = 1,2……5) ;
———τ时刻黑 体辐射
房间辐射得热为各非加热面的净辐射得热量之和,计算式如式( 5)
式中Qrτ———τ时刻房间辐射得热/W;
Ai———壁面i面积/m2。
1. 2 房间辐射负荷
绝热房间各非加热面在获得辐射热以后,会部分形成负荷,采用热平衡方法,便可对各壁面进行对流辐射分离[10],即
式中CLQriτ———τ时刻壁面i的辐射负荷,即壁面接受辐射热后形成的对流热 /W;
qiτ———τ时刻壁面i热流/W·m- 2( 采用建通热流密度计和里氏热流计测得) 。
通过实验测得qiτ,便可通过式( 4) 和式( 6) 计算获得各非加热面的辐射负荷,由各非加热面对流换热量之和即为房间辐射负荷CLQrτ1,计算式如式( 7)
另一方面,基于绝热房间假说,由房间热平衡计算得到房间辐射负荷如式( 8)
式中CLQ'rτ———基于房间热平衡获得的τ时刻房间辐射负荷/W;
CLQτ———τ时刻房间总负荷/W,( 由该时刻的房间送、回风实验值计算获得) ;
CLQrxτ———τ时刻房间x加热面分离的对流热负荷/W,( 也可由x面热平衡计算) ;
c———空气比热 / J·kg- 1·℃- 1,取c = 1005J/kg·℃ ;
L———房间送风量 / m3·s- 1;
0τ、tpτ———τ时刻送、回风温度/℃;
ρ———空气密度 / kg·m- 3。
利用各面辐射分离求解获得辐射负荷式( 7) 与采用实验热平衡获得辐射负荷的相对误差定义式( 9) ,以判别论文实验的准确性,各工况相对误差采用了周期内各实验值平均值,从而获得各工况δ1为
1. 3 房间辐射传递函数
由式( 5) 和式( 7) 获得房间辐射得热和辐射负荷后,采用最小二乘法便可计算房间辐射传递函数系数,其辐射负荷计算式[11]如式( 10)
其中,v0为当前计算时刻的辐射得热转变成当前辐射负荷的比例,v1是前一时刻的辐射得热转变为当前时刻辐射负荷的比例; 而ω1通常为负值,说明在计算即时辐射负荷时,必须计入前一时刻的部分辐射负荷。同理,其相对误差定义为,各工况相对误差δ2与δ1相同的处理方法。
2 实验设计
2. 1 实验系统
实验小室( 2. 5 m×2. 1 m×2. 5 m) 位于建筑中间层区,小室四面墙体和顶板为100 mm厚聚氨酯保温库板制作,地面为2 mm厚不锈钢板,房间各面均贴有2 mm厚的电热膜。该实验房间位于一普通空调房间之中,没有外墙。环境室内温度可控,实验小室内景构造如图1,风口布置见图2。
1 - 表冷器; 2 - 电加热; 3 - 变频送风机; 4 - 空气处理机组;5 - 送风口; 6 - 回风口; 7 - 电热膜加热面( 南墙) ; 8 - 电热膜调压器
如图3所示为实验系统原理图,室内气流组织为顶部散流器送风,风道沿屋顶敷设。整个空调系统采用全新风送风,回风直接排出室外。实验中房间回风温度主要由表冷器1和电加热2调节控制;房间送风量则采用变频送风机3调节控制; 南墙壁面电热膜7由电热膜输入功率的调压器8调节,实验时以模拟输出功率的周期性变化为调节目标。
2. 2 实验方法与实验工况
考虑到加热面内加热电热丝布置并非完全均匀,正式实验前,首先进行了各壁面的温度和热流密度的均匀性代表测点预实验,根据均匀性实验结果设计了如图4的测点布置方案。实验中共布有温度测点23个,热流密度测点10个。其中南墙加热面,贴有4个温度测点,2个热流密度测点,其它墙面贴有2个温度测点,东、西、北墙面各贴有2、3、1个热流密度测点; 屋顶、地面各贴2个温度测点和1个热流密度测点。送、回风风口各有温度测点3个; 室内仅布1根测线共3个测点以测量垂直方向空气温度。另采用风量罩测定实验风量。实验中各参数测量用仪器性能见表1。
实验中南墙电热膜输入功率为周期性变化,以获得周期性扰量作用下的房间辐射负荷。实验时室内空气温度设定为25℃。实验在变壁面平均热流和变换气次数( 改变房间通风量) 两种变参数条件下进行,共5个实验工况,且实验中每个工况均进行多个连续周期的实验,以消除壁温等实验参数初始条件的影响。实验结果表明,对研究对象进行2个及以上的周期后,前后两个周期对应时刻的加热面和非加热面壁温最大误差分别为2. 1% 和7. 0% ,此时可认为最后周期的壁温基本无初始条件的影响。下述研究分析均以最后一个周期的实验结果为依据,实验各工况详见表2。
注: CLQr1———实验分离负荷峰值; CLQr2———传递函数计算的辐射负荷峰值; CLQr———热平衡法计算的辐射负荷峰值。
3 实验结果及分析
3. 1 热平衡及其辐射传递系数实验结果及分析
根据式( 1) ~ 式( 8) ,在热平衡实验中,获得变壁面热流和变换气次数两种实验条件下实验分离辐射负荷δ1平均误差为7. 4% ,最大11. 5% ,说明该文提出的辐射分离方法计算辐射负荷合理、可行,详见表3。
采用最小二乘法并利用分离所得辐射负荷,可获得各工况下平均辐射传递函数系数,由此计算房间辐射负荷CLQr2,详见表3,结果表明,传递函数法计算的辐射负荷相对误差δ2各工况均小于15% ,平均误差10. 5% ,基本满足ASHRER数据传递函数的小于20% 的分类标准[12],即可归为一类传递函数。
图5展示工况2扰量、分离辐射负荷以及传递函数计算辐射负荷曲线,两曲线与图中热平衡实验获得辐射负荷均极为吻合,所以可认为用实验分析方法求解辐射传递函数进而计算辐射负荷可行。
房间辐射传递函数系数主要和围护结构材料有关[11]。本实验中,两种变参数即加热面加热量和室内换气次数变化条件下,其辐射传递系数变化均较小,采用辐射传递函数均值各工况中引起的最大误差分别为: 6. 5% 、7. 3% 、8. 2% 、8. 0% 、5. 7% ,均在10% 以内。因此可以认为变壁面加热量和换气次数对辐射传递函数影响可以忽略。
3. 2 辐射负荷特性分析
按式( 6) 可得工况2和工况5房间各壁面辐射负荷,见图6 ~ 图7。由图可知,房间各壁面辐射负荷变化规律相似。其中,房间各面中北墙的辐射负荷最大,屋顶的辐射负荷最小,且各面辐射负荷达到峰值的时间几乎相同。这是因为房间南墙为加热面,北墙与南墙角系数最大,即从南墙获得的辐射能量最多,即在其它实验条件不变的情况下,角系数越大的表面,辐射负荷越大; 对于房间的屋顶和地面,与南墙具有相同的角系数,但屋顶布有送、回风口,有效面积较小,此外因室内略有分层现象,屋顶壁面温度甚至要高于地板温度2℃左右,屋顶辐射换热也比地板要低,从而导致屋顶辐射负荷较小。
研究变壁面热流和变换气次数条件下北墙的辐射负荷特性,由图8可得,随着房间壁面热源增大,北墙辐射负荷峰值增大,辐射负荷达到峰值的时间略短,这是由于实验房间蓄热能力有限,扰量增加时,随着壁面热流的增加,房间辐射得热转化负荷量较大; 由图9可得,在变换气次数条件下,北墙辐射负荷变化曲线略有不同。随着换气次数增大,北墙辐射负荷均减小,且辐射负荷达到峰值的时间逐渐减小,这是因为对流换热系数受换气次数影响所致,随着换气次数增大,对流换热系数会有所增加[13],对流换热增强,则相应辐射换热减小,辐射负荷峰值也会有所降低。图10为北墙辐射负荷均值随变壁面热流均值和房间换气次数增加的变化曲线。壁面热流均值增加,辐射负荷均值随之增加,但并非线性增加,而房间换气次数增加,辐射负荷均值接近线性变化。
4 结论
( 1) 实验热平衡条件下,对比分析变壁面热流和变换气次数两种实验条件的分离辐射负荷,其相对平均误差为7. 4% ,说明实验系统热平衡条件较好;
( 2) 通过实验可获得变壁面热流和变换气次数条件下的辐射传递函数系数,采用传递函数均值计算的辐射负荷相对热平衡条件下的辐射负荷的平均误差10. 5% ,共同反映实验系统和均值辐射传递函数系数两者因素的综合影响;
( 3) 对比分析实验各工况采用传递函数均值计算的辐射负荷与实验分离辐射负荷,其最大相对误差均在10% 以内,说明通过实验方法获得房间辐射传递函数的方法可行;
( 4) 讨论房间墙面辐射负荷特性结果表明,房间各壁面辐射负荷变化规律相似,与加热面对立的壁面辐射负荷最大,且该面辐射负荷均值随着壁面热源的增大非线性增加,随换气次数的增加近似可认为线性降低。
摘要:为了更加准确地计算大空间分层空调辐射转移负荷,本文通过壁面对流辐射分离的实验方法获得房间在周期热作用下,变房间换气次数和变壁面发热量时的辐射得热和辐射负荷,并采用最小二乘法求得房间辐射传递函数系数。采用传递函数法也可求得辐射负荷,对比分析两种方法获得的辐射负荷与热平衡实验辐射负荷结果,前者采用对流辐射分离实验方法获得的辐射负荷与热平衡实验结果比较,完整周期内平均相对误差7.4%,而后者传递函数法计算获得的辐射负荷在完整周期内各工况平均相对误差为10.5%。上述结果表明,两种变参数条件下,辐射传递函数受壁面热流与换气次数变化的影响均可忽略,且房间各壁面辐射负荷变化规律相似,其中加热面对立面的辐射负荷最大,且其在完整周期内的辐射负荷均值随壁面热流增加呈非线性增加,随换气次数增加近似线性降低,进一步验证了通过实验获得房间辐射传递函数方法的可行性,为大空间辐射转移负荷的研究奠定了实验基础。
3.传递函数matlab实验 篇三
二维线性系统脉冲传递函数估计的渐近性质
利用离散的平稳高斯过程族作为二维线性系统的.输入和输出来对其脉冲传递函数进行了估计,并讨论了脉冲传递函数估计的渐近性质和极限定理.
作 者:李云丽 付俐 LI Yun-li FU Li 作者单位:北京交通大学,理学院,北京,100044刊 名:北京交通大学学报(自然科学版) ISTIC PKU英文刊名:JOURNAL OF BEIJING JIAOTONG UNIVERSITY年,卷(期):31(6)分类号:O211.6关键词:高斯过程 谱密度函数 误差估计 渐近性质
4.传递函数matlab实验 篇四
站点:www.cndev-lab.com
所有稿件均有版权,如要,请务必著名出处和作者*/
#include
main
{
void search_score(); /* 定义自定义涵数类型为不返回型 */
void count_avg(); /* 定义自定义涵数类型为不返回型 */
static float a[3][4]={{97,45.5,66,77},{88,92.5,78.5,66},{83,74.5,92,100}}; /* 输入3个学生的各自4门课的成绩 */
search_score(a,0); /* 调换自定义涵数显示其中一个同学的各门课成绩 */
count_avg(*a,12); /* 调换自定义涵数显示3个同学各门课的平均成绩成绩 */
/* 注意上面的*a其实也就是a[0]或者是&a[0][]0将这行改写成count_avg(a[0],12);或者count_avg(&a[0][0],12)也都是对的 */
}
void search_score(p,n)
float (*p)[4]; /* 定义一个指针变量p,说明它是一个指向一个包含4个整型变量一维数组的指针 */
int n; /* 定义形式参数n为整形 */
{
int i; /* 定义用于循环的变量i */
for (i=0;i<4;i++ ) /* 这里循环4次用于打印一个同学的4门课成绩 */
{
printf(“%7.2f”,*(*(p+n)+i));
}
printf(“ ”);
}
void count_avg(p,n)
float *p;
int n;
{
float *p_end;
float sum = 0;
float avg;
p_end = p+n-1; /* 计算出最后一个数组元素的地址 */
for (;p<=p_end;p++) /* 循环到最后一个元素地址就停止 */
{
sum += *p;
}
avg = sum/n;
printf(“avg=%7.2f ”,avg);
}
/*
注意此题的意思在于输入3个同4门课的成绩,计算出平均值和显示其中一个同学的4门课成绩,此例是对多维数组指针和多维数组
的指针作为涵数参数传递的总结,认真联系和体会可以很好的了解多维数组指针的概念到底是什么!
5.matlab数学实验体会 篇五
数学实验周我们学习了Matlab软件,这是一个十分实用和重要的软件。初次结识MATLAB,感觉这是一个很好的软件,语言简便,实用性强。作为一个新手,想要学习好这门语言,可以说还是比较难的。在我接触这门语言的这些天,一直在上面弄,除了会画几个简单的三维图形,其他的还是有待提高。在这个软件中,虽然有help。大家不要以为有了这个就万事大吉了,反而,从另一个方面也对我们大学生提出了两个要求——充实的课外基础和良好的英语基础。在现代,几乎所有好的软件都是来自国外,假如你不会外语,想学好是非常难的。
Matlab 语言是当今国际上科学界(尤其是自动控制领域)最具影响力、也是最有活力的软件。它起源于矩阵运算,并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便捷的与其他程序和语言接口的功能。
作为一种计算机语言,Matlab体现了与它价值的相符的优点:
1.编程简单使用方便。在这方面我感觉C语言也是一种简单的编程语言。只要入门就很好掌握,但是要学习一门语言不是那么容易的,到目前为止,可以说我还没入门,所以学习起这门语言来很吃力。相对C语言而言,Matlab的矩阵和向量操作功能是其他语言无法比拟的。在Matlab环境下,数组的操作与数的操作一样简单,基本数据单元是不需要指定维数的,不需要说明数据类型的矩阵,而其数学表达式和运算规则与通常的习惯相同。
2.函数库可任意扩充。由于Matlab语言库函数与用户文件的形式相同,用户文件可以像库函数一样随意调用,所以用户可任意扩充库函数。
3.语言简单内涵丰富。在此语言中,最重要的成分是函数,一般形式为:Function[a,b,c„„]=fun(d,e,f„„)Fun是自定义的函数名,只要不与库函数想重,并且符合字符串书写规则即可。
4、简便的绘图功能。MATLAB具有二维和三维绘图功能,使用方法简单。三维曲线是由plot3(x,y,z)命令绘出的,看上去很简单的一个程序,相对C语言而言。极大的方便了绘图的工作和节省工作时间。
5.丰富的工具箱。由于MATLAB 的开放性,许多领域的专家都为MATLAB 编写了各种程序工具箱。这些工具箱提供了用户在特别应用领域所需的许多函数,这使得用户不必花大量的时间编写程序就可以直接调用这些函数,达到事半功倍的效果。
在理论方面,在学习MATLAB过程中,我感觉到它和c语言有许多相似之处,他有c语言的特征,但是比c语言编程计算更加简单,适合于复杂的数学运算。但是MATLAB跟其他语言也有着很大的不同。
众所周知MATLAB是一个基于矩阵运算的软件,但是,真正在运用的时候,特别是在编程的时候,许多人往往没有注意到这个问题。在使用MATLAB时,受到了其他编程习惯的影响,特别是经常使用的C语言。因此,在MATLAB编程时,for循环(包括while循环)到处都是。这不仅是没有发挥MATLAB所长,还浪费了宝贵的时间。我这里想说的一点是,往往在初始化矩阵的时候注意到这个问题,懂得了使用矩阵而不是循环来赋值,但是,在其他环节上,就很容易疏忽,或者说,仍然没有摆脱C++、C的思想。多用help,see also,lookfor,get, set 等常用命令,尽量摆脱c编程的习惯,总爱用循环,能不用的循环的尽量不用,掌握矢量化的精髓。(1)help: 最有效的命令。其实,可以这样说吧,一遇 到什么问题,通常可以从 help 中找到答案。就先说说对help的一些常用方法。
1)命令窗口直接敲“help”,你就可以得到本地机器上matlab的基本的帮助信息。
2)对于某些不是很明确的命令,只知道大体所属范围,譬如说某个工具箱,直接在命令窗口中敲入 help toolboxname,一帮可以得到本工具箱有关的信息:版本号,函数名等。
(2)lookfor:可以说是 matlab中的google。当我们很多什么头绪都没有的时候,我们可以求助于它,往往会收到意想不到的效果。譬如:曾经在gui编程的时候,遇到过这样一个问题:想拖动鼠标时,要出现一个方框,就像你在桌面上拖动鼠标,会出现虚线框一样。当初我也刚开始一定都不知道该查找什么东西,后来想起用它了。于是,>> lookfor Rectangle。这样一条信息:GETRECT Select rectangle with mouse.get,set: GUI object 属性的帮手在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。这时,可以用 get(handles得到此对象的所有的属性及其当前值。用set(handles)可以得到对象所有可以设置的属性及其可能的取值找到我们需要的属性名字和可能的取值之后,就意义用 get(handles,‘propertyname’)取得此属性的值,用set(handles,‘propertyname’,values)设置此对象此属性的值。Edit: 查看m源文件的助手在应用matlab过程中,可能我们想看看它的m源文件,当然用editor定位打开也行,但是我经常采用的式直接在command窗口中用edit funname.m,就省去了定位的麻烦。
6.Matlab中的随机函数 篇六
随机数是专门的随机试验的结果。
在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等。
产生随机数有多种不同的方法,这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的数毫无关系。真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。
2 伪随机数与伪随机数生成器
所谓伪随机数,就是用数学递推公式所产生的一组数目巨大的数,这组数的出现符合一定的概率分布,并且这组数能通过相应的随机性测试,将这组数称为随机数。但是由于其本质仅仅是用一组确定的数对真随机数所表现出来的相关性质的近似,在有些场合下就无法满足应用要求,或者说是“随机性质不够了”,如现在使用最广泛的一种伪随机数产生算法,线性同余算法,无法满足蒙特卡罗模拟对随机性的要求。
Matlab默认使用的随机数生成算法Mersenne twister是目前较好的一种伪随机数产生算法,可以满足很多场合的应用,如蒙特卡罗模拟等。所有满足不同分布的伪随机数,都可以通过对均匀分布伪随机数的数学变换得到,均匀分布伪随机数的产生算法,是伪随机数产生算法的根基,线性同余算法、Mersenne twister算法,都是均匀分布伪随机数的产生算法。
伪随机数的产生,首先是选取种子,然后是在此种子基础上根据具体的生成算法计算得到一个伪随机数,然后利用此伪随机数再根据生成算法递归计算出下一个伪随机数,直到将所有不重复出现的伪随机数全部计算出来。这个伪随机数序列就是以后要用到的伪随机数序列。上面的计算过程可以一次性计算完毕,也可以使用一次递归计算一次,每次生成的伪随机数就是这个伪随机数序列中的一个,不过不管怎么样,只要确定了种子,确定了生成算法,这个序列就是确定的了。所谓种子,就是一个对伪随机数计算的初始值。既然是确定的了,那么当使用某种算法计算给出一个伪随机数,下一次计算时出现的数也就是固定的。
伪随机数的“随机”在于,虽然下次计算产生的数是一个固定的数,但是这种出现的模式,以及整个伪随机数序列,却能通过大部分随机性测试实验,这说明对随机性测试实验来说,伪随机数的表现同真随机数接近,这样在一些不是很苛刻的应用场合,就能拿这组伪随机数来用,使用时的外在表现同真随机数是较近似的。
Matlab刚运行起来时,种子都为初始值,因此每次第一次执行rand得到的随机数都是相同的。
如果计算机速度足够快的情况下,当然按下回车键时不可以停顿,哪怕是很短暂的停顿。试运行一下:
A和B是相同。
这就是伪随机数的一个缺陷。
3 随机数原理
Matlab的随机函数产生的随机数都是根据伪随机数序列获取的,在v7.7以上的版本中,有如下的伪随机数产生器:
Mersenne twister,Multiplicative congruential generator,Multiplicative lagged Fibonacci generator,Combined multiple recursive generator,Shift-register generator summed with linear congruential generator,Modified subtract with borrow generator。
相关的指令即可选择不同的产生器。
默认的情况下,Matlab在启动时总是将各个产生器的种子设为0,这样造成编写包含随机函数的程序每次运行的结果都是固定的,为了改变这种情况,可以将系统时间设置为种子:
这样每次Matlab启动时种子设置的不同会使得计算得到的随机序列不同。在7.7版本以上,随机序列的生成通过RandStream对象来实现,与7.7以前的版本不同。
RandStream对象的使用可简单总结如下:要生成一个随机数,首先需要一个伪随机数序列,这个序列通过设定种子和生成算法来确定,RandStream的构造函数或RandStream.create方法即用来完成此任务;然后需要使用RandStream.setDefaultStream函数将确定好的序列对象设置为当前Matlab使用的序列;最后通过rand等函数就可以用此序列生成随机数了。当然也可以不用将其设置为默认序列,使用rand函数可以指定从哪个序列中生成随机数:
使用RandStream.create函数可以创建独立同分布的随机序列,如
要使得前后两次生成的随机数保持一样,可以将递归计算的过程中的伪随机数状态记录下来,然后下一次计算总是基于这个记录下来的伪随机数状态来进行,这样每次计算得到的随机数就总是相同的:
各个指令具体的使用方法可以通过helpdesk命令,搜索RandStream来查看。v7.7以上版本为了与旧版本保持兼容,保留了原来如rand(‘state’,0)这种伪随机序列设置方法,称之为legacy mode,有关legacy mode的内容也可以在RandStream项中找到。
4 Matlab的随机函数randn、randsrc和rand
4.1 randn函数
RANDN产生正态分布数的语法:
RANDN(N):产生N×N的矩阵,其元素是按正态分布的数组。
RANDN(M,N)and RANDN([M,N]):产生M×N的矩阵。
RANDN(M,N,P,...)or RANDN([M,N,P...])产生随机序列。
RANDN产生伪随机数的语法:发生器的状态决定所产生数的序号。
S=RANDN(‘state’)是一个二元向量,包括标准发生器的状态。
RANDN(‘state’,S):设置发生器的状态为S(即标准状态)。
RANDN(‘state’,0):设置发生器的初始状态。
RANDN(‘state’,J):J为整数,设置发生器到J阶状态。
MATlAB 4.X应用一个单独的种子来产生随机数。
RANDN(‘seed’,0)和RANDN(‘seed’,J)作用与RANDN(‘state’,0)和RANDN(‘state’,J)一样,但使用Matlab 4.x随机数发生器。RANDN(‘seed’):返回Matlab 4.X发生器的当前种子。
4.2 randsrc函数
无参数,则随机输出-1或1。
有参数,输出m*m或m*n矩阵,按照1/2的概率随机分布-1和1,如果有alphabet参数,则按照同样的概率输出由该参数确定的数字。再有prob参数,确定每一个数字的出现概率。
x=randsrc(1,50,[4 5 6;0.1 0.8 0.1]),表示4,5,6服从0.1,0.8,0.1的概率分布。
4.3 rand函数
rand机生成一个在开区间(0,1)之间的随机数。
设取值区间为(a,b),则要在此区间选取一个m*n随机矩阵,程序为:a=rand(m,n)*(b-a)+a若要求随机数是整数,则添加函数fix(向零方向去整)、floor(不大于自变量的最大整数)、ceil(不小于自变量的最大整数)、round(四舍五入到最邻近的整数)即可。
5 结语
在实际应用中很多地方都要用到伪随机数,如何选择生成随机序列的种子参数,以及选用何种随机算法以期生成性能更佳的伪随机序列是计算机软件开发人员追求的目标之一。但是不能一味追求最接近真实的随机数,这是一个很困难的事情,只要把握着够用、实用即可,相信通过不停地尝试总能找到一个合适的方法来生成满足自己条件的伪随机数。
摘要:随机数在实践环境模拟和测试等领域中得到很广泛的应用。由于用物理方法产生的随机数因种种缺点无法应用到一般的研究中。为满足计算机模拟研究的需求,人们转而研究用算法生成模拟各种概率分布的伪随机序列。该文对Matlab中的随机数进行了较为全面的分析。
关键词:随机数,伪随机数产生,rand,概率分布
参考文献
[1]张志勇.精通MATLAB6.5版[M].北京航空航天大学出版社,2003.
[2]徐金明.MATLAB实用教程[M].清华大学出版社,北京交通大学出版社,2005.
[3]求是科技.MATLAB7.0从入门到精通[M].人民邮电出版社,2006.
[4]姜启源,等.大学数学实验[M].清华大学出版社,2005
7.传递函数matlab实验 篇七
实验六 SIMULINK交互式仿真
一、实验目的
1、熟悉SIMULINK交互式仿真集成环境。
2、掌握连续时间系统建模的方法。
二、实验主要仪器与设备
装配有MATLAB7.6软件的计算机
三、预习要求
做实验前必须认真复习第七章SIMULINK交互式仿真集成环境。
四、实验内容及实验步骤
示的SIMULINK模块库浏览器。
《计算机仿真及应用》实验教案
图7.2 SIMULINK模块库浏览器
4、开启空白(新建)模型窗
单机Simulink模块库浏览器工具条上的图标“去的)。
5、从模块库复制所需模块到空白(新建)模型窗(见图7.3)
把连续模块子库中的积分器
”;或在选择下拉菜单项{File:
New},引出如图7.3所示的空白模型窗(注:窗中的模块是后一个步骤复制进
《计算机仿真及应用》实验教案
7.3 制进库模块的新建模型窗
6、新建模型窗中的模型再复制
在该新建模型窗中,可以通过再复制,产生建模所需的2个积分模块和2个增益 模块。具体操作方法是:按住[Ctrl]键,用鼠标“点亮并拖拉”积分模块
见一个所需的增益模块,可采用类似方法获得。
7、模块连接线的形成方法随信号起始端位置不同而不同,具体如下。
起始端位于模块输出口的信号线生成法。使光标靠近模块输出口;待光标变 为“单线十字叉”时,按下鼠标左键;移动十字叉,拖出一根“虚连线”;光标 与另一个模块输出口靠近到一定程度,单十字叉变为双十字叉;放开鼠标左键,”虚连线”便变为带箭头的信号连线。
起始端位于其他信号线上的信号线生成法。使光标置于已经存在的其他信号线 之上;按下鼠标右键,光标变为“单线十字叉”;运动鼠标,引出”虚连线”;当 鼠标与待连接模块输入口靠得足够近,单十字叉变为双十字叉;放开鼠标右键,“虚连线”便变为带箭头的信号连线。
双击相应的信号线,给信号线作标注,如x’’,x’,x等。
《计算机仿真及应用》实验教案
图7.4
已构建完成的新建模型窗
8、根据理论数学模型设置模块参数
为使构造的Simulink模型与理论数学模型一致,须对模块进行如下参数设置。
设置增益模块
《计算机仿真及应用》实验教案
修改求和模块输入口的代数符号:双击求和模块,引出如图7.1-6所示的参数设置窗; 把符号列表栏中的默认符号(++)修改成代数符号(--);单击【OK】键,完成设置;
图7.6 改变输出入口符号的求和模块参数设置窗
据初始位移x(0)=0.05m对积分模块
《计算机仿真及应用》实验教案
图7.7 实现初始化位移0.05设置的Integrator1设置窗
9仿真运行参数采用默认解算器“ode45”、默认“变步长”和默认仿真终止时间10.10把新建模型保存为exm070101.mdl.11试运行,以便发现问题加以改善。
双击
”仿真启动键,使该模型运行;在示波器上呈现
图7.8 坐标范围设置不当时的信号
《计算机仿真及应用》实验教案
单击Scope显示窗上的纵坐标范围自动设置图标“”,示波器显示窗改变为图7.9所
示。在显示窗中,可以看到位移x(t)的变化曲线。同时可以发现:纵坐标的适当范 围大致在【-0.06,0.06】;仿真时间取【0,5】即可;显示的曲线不够光滑。
图7.9 采用轴自动设置功能的信号显示
12、据试运行结果,进行仿真参数的再设置
示波器纵坐标设置:用鼠标单击示波器的黑色显示屏,在弹出菜单中选择Axes Properties,引出纵坐标设置对话窗7.10所示;把纵坐标的下限、上限分别设置为(-0.06)和(+0.06);单 击【OK】,完成设置。
示波器时间显示范围的修改:单击示波器的参数设置图标“
”,引出示波器参数设置窗;
在General卡片的Axes区的Time range栏中,填写5或auto;单击【OK】,完成设置。
图7.10 对显示屏的纵坐标范围进行设置
7.11 对示波器时间显示范围的设置
·仿真终止时间最简捷的修改方法:在exam070101模型窗“仿真终止时 间”栏“
”中的默认值10改变为5。
《计算机仿真及应用》实验教案
·显示曲线的光滑化设置:选中exam070101模型窗的下拉菜单项SimulationConfiguration Parameters,引出仿真参数配置窗,如图7.12所示;再在该窗左侧的选择栏中,选中Data Import/Export项,与之相应的参数设置栏便出现在窗口的右侧;把右半窗下方Save options 区中Refine factor栏中的默认值1改为5;单击OK,完成设置。
7.12 通过仿真参数配置窗设置输出光滑因子
《计算机仿真及应用》实验教案
完成以上修改后的模型窗如图7.13所示。再运行exam070101,可得比较满意的位移变化曲线(见图7.14所示)。顺便指出:模型运行后,在模块输出口的信号线上会出现double字样。这 表示该信号是采用“双精度”类型数据运算。如果用户不希望这类标识出现,那么应取消对下 拉菜单项FormatPort signal DisplaysPort Data Types的勾选。
图7.13
仿真参数调整运行后的exam070101模型
在模型窗中,x’’,x’,x等信号名称是模型创建者根据需要写入的。标识信号名称的操作方法 是:用鼠标双击信号附近的适当位置后,就会出现一个虚线框,该虚线框中允许输入任何 文字。
13、仿真结果显示
原本比较稀疏的解计算器数据,经设定的“光滑因子”下的插值,增加了用于描绘曲线的 数据点数,因此使示波器显示出更为光滑的曲线,如图7.14所示。
《计算机仿真及应用》实验教案
图7.14 适当地显示仿真所得的位移变化曲线
8.函数实验报告 篇八
函数 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤:
实验内容:实验指导书中的实验八 实验步骤:
1.1.实验内容的第 1 题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作:
点击快捷键 F10 开始调试,在下方窗口输入要观察的变量,回车显示跟踪变量的值。将光标放于函数定义前点击单步调试按钮,出现红点后即可进入函数,退出调试再点一下调试按钮或者按 Shift+F5 退出。
提问(1),请在下面粘贴运行结果画面:
实参 a 是否为同一变量?实参 a 不是同一变量,而是两个不同的变量分别出现在两个不同的函数中。
提问(2),请请在下面粘贴运行结果画面:
提问(3),观察结果有何变化? 大小无法比较,系统自动给出一个随机数。
通过本题,可以得出什么结论? 在主函数之前定义了变量,则在之后编译时不用再定义;而局部变量只作用于局部函数,但能影响全局变量。若定义在主函数之后则需要加extern声明外部变量的作用域的作用范围,否则得到的是随机数。
2.2 实验内容部分第 2 题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.3 实验内容部分第 3 题源程序代码,请贴图:
程序运行结果画面,请贴图:
2.4 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
2.5 选做题,若做了,请在下面给出源程序代码贴图及运行结果贴图
9.C语言程序设计实验五:函数 篇九
1、定义函数返回两个数中较大的数,在主函数中通过调用该函数求三个数中较大的数并输出,编写主函数调用该函数。
说明:
(1)请大家按学号来坐,便于考勤和管理。
(2)请珍惜宝贵的实验时间!不要做与实验无关的事情,比如聊QQ、上网或打游戏。
(3)直接把C语言代码粘贴到相应的实验题目下方,上交实验报告时只交word文档。
10.传递函数matlab实验 篇十
典型环节的MATLAB仿真
一、实验目的
1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响。
二、SIMULINK的使用
MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。
1.运行MATLAB软件,在命令窗口栏“>>”提示符下键入simulink命令,按Enter键或在工具栏单击按钮,即可进入如图1-1所示的SIMULINK仿真环境下。
2.选择File菜单下New下的Model命令,新建一个simulink仿真环境常规模板。3.在simulink仿真环境下,创建所需要的系统。
图1-1
SIMULINK仿真界面 图1-2
系统方框图
以图1-2所示的系统为例,说明基本设计步骤如下:
1)进入线性系统模块库,构建传递函数。点击simulink下的“Continuous”,再将右边窗口中“Transfer Fen”的图标用左键拖至新建的“untitled”窗口。
2)改变模块参数。在simulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;设置完成后,选择OK,即完成该模块的设置。
3)建立其它传递函数模块。按照上述方法,在不同的simulink的模块库中,建立系统所需的传递函数模块。例:比例环节用“Math”右边窗口“Gain”的图标。
4)选取阶跃信号输入函数。用鼠标点击simulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。
5)选择输出方式。用鼠标点击simulink下的“Sinks”,就进入输出方式模块库,通常选用“Scope”的示波器图标,将其用左键拖至新建的“untitled”窗口。
6)选择反馈形式。为了形成闭环反馈系统,需选择“Math” 模块库右边窗口“Sum”图标,并用鼠标双击,将其设置为需要的反馈形式(改变正负号)。
7)连接各元件,用鼠标划线,构成闭环传递函数。
8)运行并观察响应曲线。用鼠标单击工具栏中的“”按钮,便能自动运行仿真环境下的系统框图模型。运行完之后用鼠标双击“Scope”元件,即可看到响应曲线。
三、实验原理
1.比例环节的传递函数为
G(s)Z2R22Z1R1R1100K,R2200K
其对应的模拟电路及SIMULINK图形如图1-3所示。
图1-3 比例环节的模拟电路及SIMULINK图形
2.惯性环节的传递函数为
Z2R12Z1R2C110.2s1R2G(s)R1100K,R2200K,C11uf
其对应的模拟电路及SIMULINK图形如图1-4所示。3.积分环节(I)的传递函数为
G(s)Z211Z1R1C1s0.1sR1100K,C11uf
其对应的模拟电路及SIMULINK图形如图1-5所示。
图1-5 积分环节的模拟电路及及SIMULINK图形 图1-4 惯性环节的模拟电路及SIMULINK图形
4.微分环节(D)的传递函数为
G(s)Z2R1C1ssZ1R1100K,C110uf C2C10.01uf
其对应的模拟电路及SIMULINK图形如图1-6所示。
图1-6 微分环节的模拟电路及及SIMULINK图形
5.比例+微分环节(PD)的传递函数为
G(s)Z2R2(R1C1s1)(0.1s1)Z1R1C2C10.01uf R1R2100K,C110uf其对应的模拟电路及SIMULINK图形如图1-7所示。6.比例+积分环节(PI)的传递函数为
ZG(s)2Z
1R21C1s1(1)R1R2100K,C110uf
R1s图1-7 比例+微分环节的模拟电路及SIMULINK图形其对应的模拟电路及SIMULINK图形如图1-8所示。
图1-8 比例+积分环节的模拟电路及SIMULINK图形
四、实验内容
按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。
① 比例环节G1(s)1和G1(s)2;
图2-1 比例环节的模拟电路
图2-2比例环节SIMULINK仿真模型
② 惯性环节G1(s)11和G2(s) s10.5s1
图3-1惯性环节模拟电路
图3-2惯性环节SIMULINK仿真模型
③ 积分环节G1(s)1s
图4-1积分环节的模拟电路
图4-2积分环节SIMULINK仿真模型
④ 微分环节G1(s)s
图5-1微分环节的模拟电路
图5-2微分环节SIMULINK仿真模型
⑤ 比例+微分环节(PD)G1(s)s2和G2(s)s1
图6-1比例+微分环节的模拟电路
图6-2比例+微分SIMULINK仿真模型
⑥ 比例+积分环节(PI)G1(s)11和G2(s)11
s2s
图7-1比例+积分环节的模拟电路
图7-2比例+积分SIMULINK仿真模型
五、心得体会
【传递函数matlab实验】推荐阅读:
matlab函数表总结12-09
matlab小波函数小结12-04
c语言实验五函数11-18
函数一教案形成与实验的报告12-17
传递微笑教案06-26
传递话题作文07-24
传递总结09-10
微笑传递作文10-31
传递造句11-11
传递路径分析01-16