??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品无码一区二区三区日韩,94久久国产乱子伦精品免费 ,99久久99久久精品国产片http://www.shnenglu.com/Amigo/Labor vanquishes all, not inconstant, spasmodic, ill-directed labor but faithful, unremitting, daily effort towad a well-directed purpose . Just as truly as eternal vigilance is the price of liberty , so is eternal industry the price of noble and enduring success ! zh-cnFri, 09 May 2025 00:28:10 GMTFri, 09 May 2025 00:28:10 GMT60视频原理http://www.shnenglu.com/Amigo/archive/2009/02/20/74369.htmlAmigoAmigoFri, 20 Feb 2009 02:15:00 GMThttp://www.shnenglu.com/Amigo/archive/2009/02/20/74369.htmlhttp://www.shnenglu.com/Amigo/comments/74369.htmlhttp://www.shnenglu.com/Amigo/archive/2009/02/20/74369.html#Feedback0http://www.shnenglu.com/Amigo/comments/commentRss/74369.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/74369.html
        图象与视频是两个既有联系又有区别的概念:静止的图片称为图象(ImageQ,q动的图象称频(VideoQ。图象的输入要靠扫描仪、数字照相机或摄象机{;而视频的输入只能是摄象机、录象机、媄机以及电视接收机等可以输出q箋图象信号的设备?br>

        本文针对视频图像这一领域作一个概括的介绍Q希望对大家q一步了解视频技术方面的知识有所帮助。下面先对一些视频技术名词作一下简单解释?br>
视频信号的分cd基本概念

一、模拟视频信?br>
        Ҏ三基色原理,在视频领域利用RQ红Q、GQ绿Q、BQ蓝Q三色不同比例的混合来表C富多采的现实世界。首先,通过摄像机的光敏器g像CCDQ电药合器gQ,光信号转换成RGB三\电信P其次Q在电视机或监视器内部也使用RGB信号分别控制三支电子枪蘪击荧光屏以生媄象。这P׃摄像Z原始信号和电视机、监视器中的最l信号都是RGB信号Q因此直接用RGB信号作ؓ视频信号的传输和记录方式会获得极高的信号质量。但q样做会极大地加宽视频带宽从而增加设备成本,且这也与现行黑白电视不兼容,因此Q在实际应用中不q样做,而是按亮度方EY=0.39R+0.5G+0.11BQPALӞRGB信号转换成亮度信号Y和两个色差信号UQB-YQ、VQR-YQ,形成YUV分量信号?br>
        此种信号利用人眼对亮度细节分辨率高而对色度l节分L率低的特点,对U、V信号带宽压羃。U、V信号q可q一步合成一个色度信号CQ进而Ş成Y/C记录方式。由于记录时对C信号采取降频处理Q因此也U彩色降频方式。Y和C又可q一步Ş成复合视频(CompositeQ,卛_色全电视信号Q这U方式便于传输和电视信号的发。将RGB信号转换成YUV信号、Y/C信号直至composite信号的过E称为编码,逆过E则码。由此可看出Q由于{换步骤的多少Q视频输量由YUV端口到Y/C端口到Composite端口依次降低。因此,在视频捕捉或输出旉择合适的输入、输出端口可提高视频质量。另外,q应提供同步信号以保证传送图象稳定再现?

        视频影像是由一pd被称为的单个静止画面组成。一般率在24-30?U时Q视频运动非常^滑,而低?5?U时׃有停感?br>
        NTSCQ国家电视标准委员会(National Television Standards Commitee)的羃写。是中北洲及日本通用的电视制式,与欧z的PAL制式和法国的SECAM只是相对。他的垂直分辨率?25U,帧速ؓ30(29.97)FPS?

  PALQ逐行倒相(Phase Alteration Line)的羃写,是中国及Ƨ洲大多数国安用的电视制式。具有更高的垂直分L?625U?Q但是速相Ҏ于NTSC(25FPS)?br>
        分量视频信号(Separate Video) Q将画面按三个颜色通道(RGB)分成U、绿和蓝(附加亮度信号)三个单独信号通道。生的画面质量较高Q一般在q播U视频设备中被采用?
  复合视频信号(Composite Video) Q将彩色信号、亮度信号和同步信号混合在一个信号通道内,在家用视频设备中被大量采用?br>
         S-VideoQ是一U信可量更高的视频接口Q它取消了信号叠加的ҎQ可有效避免一些无谓的质量损失。它的功能是RGB三原色和亮度q行分离处理?br>
         YUV色彩pȝQ?YUVQ亦UYCrCbQ是被欧z电视系l所采用的一U颜色编码方法(属于PALQ。YUV主要用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。与RGB视频信号传输相比Q它最大的优点在于只需占用极少的带宽(RGB要求三个独立的视频信号同时传输)。其?#8220;Y”表示明亮度(1uminance?LumaQ,也就是灰阶|?#8220;U”?#8220;V”表示的则是色?Chrominance Chroma)Q作用是描述影像色彩及饱和度Q用于指定像素的颜色?#8220;亮度”是通过RGB输入信号来创建的Q方法是RGB信号的特定部分叠加到一赗?#8220;色度”则定义了颜色的两个方面?色调与饱和度Q分别用Cr和Cb来表C。其中,Cr反映了Cb输入信号U色部分与RGB信号亮度g间的差异。而Cb反映的是RGB输入信号蓝色部分与RGB信号亮度g间的差异?br>
二、数字视频信?/strong>

        数字视频是先用摄像Zcȝ视频捕捉讑֤Q将外界影像的颜色和亮度信息转变为电信号Q再记录到储存介质(如录像带Q。如果用CL器来观看未投q模拟电信P看v来就像脑甉|L的扫描图像,׃些连l锯齿状的山峰和pl成?br>
        Z存储视觉信息Q模拟视频信L山峰和山谷必通过数字/模拟QD/AQ{换器来{变ؓ数字?#8220;0”?#8220;1”。这个{变过E就是我们所说的视频捕捉Q或采集q程Q。如果要在电视机上观看数字视频,则需要一个从数字到模拟的转换器将二进制信息解码成模拟信号Q才能进行播放?br>
1、LVDS 

        低压差分信号传输 (LVDS) 是一U满_今高性能数据传输应用的新型技术?׃其可使系l供는压低?2VQ因此它q能满未来应用的需要?此技术基?ANSI/TIA/EIA-644 LVDS 接口标准?br>
        LVDS 技术拥?330mV 的低压差分信?(250mV MIN abd 450mV MAX) 和快速过渡时间?q可以让产品辑ֈ?100 Mbps 臌q?1 Gbps 的高数据速率?此外Q这U低压摆q可以降低功耗消散,同时具备差分传输的优炏V?br>
        LVDS 技术用于简单的U\驱动器和接收器物理层器g以及比较复杂的接口通信芯片l?通道链\芯片l多路复用和解多路复用慢?TTL 信号U\以提供窄式高速低功?LVDS 接口?q些芯片l可以大q节省系l的늼和连接器成本Qƈ且可以减连接器所占面U所需的物理空间?br>
        LVDS 解决Ҏ计h员解决高?I/O 接口问题提供了新选择?LVDS 为当今和未来的高带宽数据传输应用提供毫瓦每千兆位的方案?br>
2、Camera Link

        Camera Link 的标准是由数家工业摄影机及媄像卡大厂共同制定出来? 标准的本w是ZChannel Link 的特? q定义出标准的接头也是讯号U也标准化了, 让Camera及媄像卡的讯号传输更单化? 同时定义出基本架?Base Configuration), 中阶架构(Medium   Configuration), 及完整架?Full Configuration) 的讯h脚规范以及传输数据量?br>
        它是q接摄像头和囑փ采集卡的新标准,提供了超高的囑փ传送速度Qƈ且同时提?Ҏ像头的控制线。由于Camera Link的高性能、低成本以及其连接的便利性,q速得到大多摄像头及图像采集卡的生产商的支持。是q接摄像头和囑փ采集卡的新标准,提供了超高的囑փ传送速度Qƈ且同时提?Ҏ像头的控制线?br>
3?394
4、USB

5、千兆网

        视频信号的生从摄媄机端开始,透过一个媄像传输系l至中央控制室。在闭\电视pȝ中,信号UCؓ合成视频Q而这合成视频信号振幅之峰gؓ1伏特 (1V)。下列ؓ视频信号l构之组成部份:

视频信号:

        当媄像的光源落在CCD摄媄Z晶片上时Q其像素即生电量作用,而这 作用与落在晶片上的光U多有相对关系Q越多的光将会生越大的甉|Q此甉|可从晶片上读出ƈ转变成视频信受而晶片读取资料的方式是依晶片 U?c?的不同而有所差异。像素光U数量越大,视频信号的峰值将相对增大Q在合成视频信号中,最大峰值是 0.7 伏特。换句话_白色?明亮的图片部分将?0.7伏特的信号强度,而黑色或者黑暗的部分则有0伏特的信??br>
 水^Q行Q同步信?:
        一个媄像图框是ql成的,在NTSC的标准中Q每图框?25条线Q而PAL标准为每图框?25条线。而在U上的每一个点Q都反映视频信号的强度。在每一条线的末端,加入了一个水q_步脉波,通知摄媄机和其他闭\电视的电子装 |,?备结束此一图框或图场ƈ让他们准备v始下一个图框或囑֜。脉波的持箋时程军_于电子装|收C一条图U的旉Q而这个脉波的峰gؓ0.3伏特?br>
垂直Q场Q同步信?
        视频囑փ是由图框所l成QNTSC的标准ؓ每秒30个图框,?PAL彩色电视pȝ的标准ؓ 每秒25个图框。闭路电 视系lؓ避免画面闪动现象Q将q个视频图框分成2个不同图场,UCؓ奇图场和偶图场;q两个图场在摄媄机点分离后,会在监视器端l合Q通称囑֜l合或交错扫??br>
        在每一个图框或囑֜的终端,增加了一个垂直同步脉波,藉以通知摄媄机和其他闭\电视的电子装|,准备l束此一图框或图场,q让他们准备起始下一个图框或者图场。脉波的持箋时程军_于电子装|收C一个图场的旉Q而这个脉波的峰gؓ 0.3伏特。当此峰值加上视频信号之峰值时Q其dgؓ 1伏特?br>



Amigo 2009-02-20 10:15 发表评论
]]>
博弈论初?/title><link>http://www.shnenglu.com/Amigo/archive/2008/10/25/65006.html</link><dc:creator>Amigo</dc:creator><author>Amigo</author><pubDate>Sat, 25 Oct 2008 07:46:00 GMT</pubDate><guid>http://www.shnenglu.com/Amigo/archive/2008/10/25/65006.html</guid><wfw:comment>http://www.shnenglu.com/Amigo/comments/65006.html</wfw:comment><comments>http://www.shnenglu.com/Amigo/archive/2008/10/25/65006.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Amigo/comments/commentRss/65006.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Amigo/services/trackbacks/65006.html</trackback:ping><description><![CDATA[<p><font style="BACKGROUND-COLOR: #d0e3ff">P-position 先手必|<br>N-position 先手必胜<br><br>1.无法q行MUd的局面是P-position.<br>2.可以Ud到P-position的局面是N-position.<br>3.所有移动都DN-position的局面是P-position.<br></font></p> <img src ="http://www.shnenglu.com/Amigo/aggbug/65006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Amigo/" target="_blank">Amigo</a> 2008-10-25 15:46 <a href="http://www.shnenglu.com/Amigo/archive/2008/10/25/65006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#获取pȝ旉http://www.shnenglu.com/Amigo/archive/2008/10/24/64927.htmlAmigoAmigoFri, 24 Oct 2008 05:18:00 GMThttp://www.shnenglu.com/Amigo/archive/2008/10/24/64927.htmlhttp://www.shnenglu.com/Amigo/comments/64927.htmlhttp://www.shnenglu.com/Amigo/archive/2008/10/24/64927.html#Feedback0http://www.shnenglu.com/Amigo/comments/commentRss/64927.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/64927.htmlQ-DateTime 数字?
System.DateTime currentTime=new System.DateTime();
1.1 取当前年月日时分U?
currentTime=System.DateTime.Now;
1.2 取当前年
int q?currentTime.Year;
1.3 取当前月
int ?currentTime.Month;
1.4 取当前日
int ?currentTime.Day;
1.5 取当前时
int ?currentTime.Hour;
1.6 取当前分
int ?currentTime.Minute;
1.7 取当前秒
int U?currentTime.Second;
1.8 取当前毫U?
int 毫秒=currentTime.Millisecond;
Q变量可用中文)


1.9 取中文日期显C——年月日时分
string strY=currentTime.ToString("f"); //不显C秒


1.10 取中文日期显C_q月
string strYM=currentTime.ToString("y");


1.11 取中文日期显C_月日
string strMD=currentTime.ToString("m");


1.12 取当前年月日Q格式ؓQ?003-9-23
string strYMD=currentTime.ToString("d");


1.13 取当前时分,格式为:14Q?4
string strT=currentTime.ToString("t");



Amigo 2008-10-24 13:18 发表评论
]]>
C#生成随机?/title><link>http://www.shnenglu.com/Amigo/archive/2008/10/20/64536.html</link><dc:creator>Amigo</dc:creator><author>Amigo</author><pubDate>Mon, 20 Oct 2008 13:58:00 GMT</pubDate><guid>http://www.shnenglu.com/Amigo/archive/2008/10/20/64536.html</guid><wfw:comment>http://www.shnenglu.com/Amigo/comments/64536.html</wfw:comment><comments>http://www.shnenglu.com/Amigo/archive/2008/10/20/64536.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/Amigo/comments/commentRss/64536.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Amigo/services/trackbacks/64536.html</trackback:ping><description><![CDATA[<div id="ld79fxz" class=articleContent id=articleBody>blog1:<span id=dgfiList__ctl3_Body><br> <wbr> <wbr> <wbr>我们在做能自动生成试L考试pȝӞ常常需要随机生成一l不重复的题目,?net <wbr>Framework中提供了一个专门用来生随机数的类System.Random?br>  对于随机敎ͼ大家都知道,计算Z可能产生完全随机的数字,所谓的随机数发生器都是通过一定的法对事先选定的随机种子做复杂的运,用生的l果来近似的模拟完全随机敎ͼq种随机数被U?nbsp;<wbr>作伪随机数。伪随机数是以相同的概率从一l有限的数字中选取的。所选数字ƈ不具有完全的随机性,但是从实用的角度而言Q其随机E度已够了。伪随机数的?nbsp;<wbr>择是从随机种子开始的Q所以ؓ了保证每ơ得到的伪随机数都够地“随机”Q随机种子的选择显得非帔R要。如果随机种子一P那么同一个随机数发生器?nbsp;<wbr>的随机数也会一栗一般地Q我们用同pȝ旉有关的参C为随机种子,q也?net <wbr>Framework中的随机数发生器默认采用的方法?br>  我们可以使用两种方式初始化一个随机数发生器:<br>  W一U方法不指定随机U子Q系l自动选取当前旉作ؓ随机U子Q?br>  Random <wbr>ro <wbr>= <wbr>new <wbr>Random();<br>  W二U方法可以指定一个int型参C为随机种子:<br>  int <wbr>iSeed=10;<br>  Random <wbr>ro <wbr>= <wbr>new <wbr>Random(10);<br>  long <wbr>tick <wbr>= <wbr>DateTime.Now.Ticks;<br>  Random <wbr>ran <wbr>= <wbr>new <wbr>Random((int)(tick <wbr>& <wbr>0xffffffffL) <wbr>| <wbr>(int) <wbr>(tick <wbr>>> <wbr>32));<br>  q样可以保证99%不是一栗?br>  之后Q我们就可以使用q个Randomcȝ对象来生随机数Q这时候要用到Random.Next()Ҏ。这个方法用相当灵z,你甚臛_以指定生的随机数的上下限?br>  不指定上下限的用如下:<br>  int <wbr>iResult;<br>  iResult=ro.Next();<br>  下面的代码指定返回小?00的随机数Q?br>  int <wbr>iResult;<br>  int <wbr>iUp=100;<br>  iResult=ro.Next(iUp);<br>  而下面这D代码则指定q回值必d50-100的范围之内:<br>  int <wbr>iResult;<br>  int <wbr>iUp=100;<br>  int <wbr>iDown=50;<br>  iResult=ro.Next(iDown,iUp);<br>  除了Random.Next()Ҏ之外QRandomc还提供了Random.NextDouble()Ҏ产生一个范围在0.0-1.0之间的随机的双精度QҎQ?br>  double <wbr>dResult;<br>  dResult=ro.NextDouble();<br>  但是用Randomcȝ成题P会出现重复,特别是在数量较小的题目中要生成不重复的的题目是很隄Q参考了|上的一些方法,包括两类Q一cL通过随机U子入手Q每一ơ的随机U子不同Q来保证不重复;W二cL使用一些数据结构和法。下面主要就W二cMl几个方法?br>  <wbr> <br> <wbr> <wbr> <wbr> <wbr>Ҏ1Q思想是用一个数l来保存索引P先随机生成一个数l位|,然后把这个位|的索引号取出来Qƈ把最后一个烦引号复制到当前的数组位置Q然后随机 <wbr>数的上限减一Q具体如Q先把这100个数攑֜一个数l内Q每ơ随机取一个位|(W一ơ是1-100Q第二次?-99Q?..Q,该位置的数用最后的?nbsp;<wbr>代替?br><br> <wbr>  int[] <wbr>index <wbr>= <wbr>new <wbr>int[15];<br>  for <wbr>(int <wbr>i <wbr>= <wbr>0; <wbr>i <wbr>< <wbr>15; <wbr>i++)<br>    index <wbr>= <wbr>i;<br>  Random <wbr>r <wbr>= <wbr>new <wbr>Random();<br>  //用来保存随机生成的不重复?0个数<br>  int[] <wbr>result <wbr>= <wbr>new <wbr>int[10];<br>  int <wbr>site <wbr>= <wbr>15;//讄下限<br>  int <wbr>id;<br>  for <wbr>(int <wbr>j <wbr>= <wbr>0; <wbr>j <wbr>< <wbr>10; <wbr>j++)<br>  {<br>    id <wbr>= <wbr>r.Next(1, <wbr>site <wbr>- <wbr>1);<br>    //在随Z|取Z个数Q保存到l果数组<br>    result[j] <wbr>= <wbr>index[id];<br>    //最后一个数复制到当前位|?br>    index[id] <wbr>= <wbr>index[site <wbr>- <wbr>1];<br>    //位置的下限减一<br>    site--;<br>  } <wbr><br><br><br>  Ҏ2Q利用Hashtable。[NextPage]<br><br> <wbr>  Hashtable <wbr>hashtable <wbr>= <wbr>new <wbr>Hashtable();<br>  Random <wbr>rm <wbr>= <wbr>new <wbr>Random();<br>  int <wbr>RmNum <wbr>= <wbr>10;<br>  for <wbr>(int <wbr>i <wbr>= <wbr>0; <wbr>hashtable.Count <wbr>< <wbr>RmNum; <wbr>i++)<br>  {<br> <wbr> <wbr> <wbr>   <wbr>int <wbr>nValue <wbr>= <wbr>rm.Next(100);<br> <wbr> <wbr>   <wbr> <wbr>if <wbr>(!hashtable.ContainsValue(nValue) <wbr>&& <wbr>nValue <wbr>!= <wbr>0)<br> <wbr> <wbr>   <wbr> <wbr>{<br> <wbr> <wbr>   <wbr> <wbr> <wbr>hashtable.Add(nValue, <wbr>nValue);<br> <wbr> <wbr>   <wbr> <wbr> <wbr>Console.WriteLine(nValue.ToString());<br> <wbr> <wbr>   <wbr> <wbr>}<br>  } <wbr><br><br><br>  Ҏ3Q递归Q用它来生成的随机数是否有重复Q如果取出来的数字和已取得的数字有重复就重新随机获取?br><br> <wbr> Random <wbr>ra=new <wbr>Random(unchecked((int)DateTime.Now.Ticks));<br>  int[] <wbr>arrNum=new <wbr>int[10];<br>  int <wbr>tmp=0;<br>  int <wbr>minValue=1;<br>  int <wbr>maxValue=10;<br>  for <wbr>(int <wbr>i=0;i<10;i++)<br>  {<br>    tmp=ra.Next(minValue,maxValue); <wbr>//随机取数<br>    arrNum=getNum(arrNum,tmp,minValue,maxValue,ra); <wbr>//取出D到数l中<br>  }<br>  .........<br>  .........<br>  public <wbr>int <wbr>getNum(int[] <wbr>arrNum,int <wbr>tmp,int <wbr>minValue,int <wbr>maxValue,Random <wbr>ra)<br>  {<br>    int <wbr>n=0;<br>    while <wbr>(n<=arrNum.Length-1)<br>    {<br>      if <wbr>(arrNum[n]==tmp) <wbr>//利用循环判断是否有重?br>      {<br>        tmp=ra.Next(minValue,maxValue); <wbr>//重新随机获取?br>        getNum(arrNum,tmp,minValue,maxValue,ra);//递归:如果取出来的数字和已取得的数字有重复重新随取?br>      }<br>    n++;<br>    }<br>    return <wbr>tmp;<br>  } <wbr><br></span></div> blog2:<br> /// <summary><br>  /// 功能描述Q返回不重复随机数数l?br>  /// 作者:    杨艳?br>  /// 创徏日期Q?006-4-30<br>  /// </summary><br>  /// <param name="Num">随机C?lt;/param><br>  /// <param name="minNum">随机C?lt;/param><br>  /// <param name="maxNum">随机C?lt;/param><br>  /// <returns></returns><br>  public int[] GetRandomArray(int Number,int minNum,int maxNum)<br>  {<br>   int j;<br>   int[] b=new int[Number];<br>   Random r=new Random();<br>   for(j=0;j<Number;j++)<br>   {<br>    int i=r.Next(minNum,maxNum+1);<br>    int num=0;<br>    for(int k=0;k<j;k++)<br>    {<br>     if(b[k]==i)<br>     {<br>      num=num+1;<br>     }<br>    }<br>    if(num==0 )<br>    {<br>     b[j]=i;<br>    }<br>    else<br>    {<br>     j=j-1;<br>    }<br>   }<br>   return b;<br>  } <br><br><br>blog3:<br> <p>public static string GetRandomPassword(int length)<br>{<br>byte[] random = new Byte[length/2];<br>RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();<br>rng.GetNonZeroBytes(random);</p> <p>StringBuilder sb = new StringBuilder(length);<br>int i;<br>for (i = 0; i < random.Length; i++) <br>{<br>sb.Append(String.Format("{0:X2}",random[i]));<br>}<br>return sb.ToString();<br>}</p> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskill.com/public/xml/rss/module/trackback/"><rdf:description rdf:about="http://www.bullog.cn/blogs/virushuo/archives/37237.aspx" dc:identifier="http://www.bullog.cn/blogs/virushuo/archives/37237.aspx" dc:title="C#随机数生? trackback:ping="http://www.bullog.cn/blogs/virushuo/trackbacks/37237.aspx"><br><br>blog4:<br>Random   newRandom=new   Random();   <br>  string   tempRandom="";   <br>  for(int   i=0;i<4;i++)   <br>        {   <br>          string   t=Convert.ToInt16(9*a.NextDouble()).ToString();   <br>          <br>          tempRandom+=t;   <br>        <br>        }<br><br>生成9?  <br>  Random   newRandom=new   Random();   <br>  string   tempRandom="";   <br>  for(int   i=0;i<9;i++)   <br>        {   <br>          string   t=Convert.ToInt16(9*a.NextDouble()).ToString();   <br>          <br>          tempRandom+=t;   <br>        <br>        }   <br>  随机生成“0”?#8220;1”字符   <br>    <br>  Random   newRandom=new   Random();   <br>  string   tempRandom="";   <br>  for(int   i=0;i<1;i++)   <br>        {   <br>          string   t=Convert.ToInt16(1*a.NextDouble()).ToString();   <br>          <br>          tempRandom+=t;   <br>        <br>        }   <br>    <br>更正.h     Random   newRandom=new   Random();     换成       Random   a=new   Random();<br><br>public   string   GetRandom(int   length)   <br>  {   <br>  string   radstr   =   "";   <br>  Random   random   =   new   Random();   <br>  for   (int   i=0;i<length;i++)   <br>  {   <br>  int   a   =   random.Next(10);   <br>  radstr+=a.ToString();   <br>  }   <br>  return   radstr;   <br>  }<br><br>blog5:<br> <h1 class=ContentTitle><strong>C#生成随机数小l?/strong></h1> <h2 class=ContentAuthor>作?dnawo 日期:2008-05-22</h2> <div id="179x7hp" class=Content-Info> <div id="x7pp7v9" class=InfoOther>字体大小: <a accessKey=1 href="javascript:SetFont('12px')"><u><font color=#0000ff>?/font></u></a> <a accessKey=2 href="javascript:SetFont('14px')"><u><font color=#0000ff>?/font></u></a> <a accessKey=3 href="javascript:SetFont('16px')"><u><font color=#0000ff>?/font></u></a></div> <div id="t9hdb7h" class=InfoAuthor><u><font color=#0000ff><img style="MARGIN: 0px 2px -6px 0px" alt="" src="http://www.mzwu.com/images/weather/hn2_sunny.gif"><img alt="" src="http://www.mzwu.com/images/weather/hn2_t_sunny.gif"></font></u> <img style="MARGIN: 0px 2px -1px 0px" alt="" src="http://www.mzwu.com/images/level3.gif"> </div> </div> <div id="9lbjnbh" class=Content-body id=logPanel>C#的Randomcȝ实例ҎNext可以生成一串伪随机敎ͼNext有三个重载函敎ͼ<br><br> <div id="r7vpd9t" class=UBBPanel> <div id="nt7fx77" class=UBBTitle><img style="MARGIN: 0px 2px -3px 0px" alt=E序代码 src="http://www.mzwu.com/images/code.gif"> E序代码</div> <div id="lz9p79t" class=UBBContent>public virtual int Next();<br>public virtual int Next(int maxValue);<br>public virtual int Next(int minValue, int maxValue);</div> </div> <br><br><strong>1.public virtual int Next()</strong><br>说明Q返回大于或{于零且于 System.Int32.MaxValue ?32 位带W号整数?br> <div id="9bz79jf" class=UBBPanel> <div id="7rv1zjb" class=UBBTitle><img style="MARGIN: 0px 2px -3px 0px" alt=E序代码 src="http://www.mzwu.com/images/code.gif"> E序代码</div> <div id="np97rzr" class=UBBContent>Random rand = new Random();<br>Response.Write(rand.Next());</div> </div> <br><strong>2.public virtual int Next(int maxValue)</strong><br>说明Q返回大于或{于零且于 maxValue ?32 位带W号整数?br> <div id="r99h9fx" class=UBBPanel> <div id="nnvl7hf" class=UBBTitle><img style="MARGIN: 0px 2px -3px 0px" alt=E序代码 src="http://www.mzwu.com/images/code.gif"> E序代码</div> <div id="z997jbl" class=UBBContent>Random rand = new Random();<br>Response.Write(rand.Next(100));</div> </div> <br><strong>3.public virtual int Next(int minValue, int maxValue)</strong><br>说明Q返回一个大于或{于 minValue 且小?maxValue ?32 位带W号整数?br> <div id="z9xl799" class=UBBPanel> <div id="jpfn7x7" class=UBBTitle><img style="MARGIN: 0px 2px -3px 0px" alt=E序代码 src="http://www.mzwu.com/images/code.gif"> E序代码</div> <div id="7d99f99" class=UBBContent>Random rand = new Random();<br>Response.Write(rand.Next(1000,2000));</div> </div> <br>和Randomcȝ似的q有一个类GuidQ可以用它的静态方法NewGuid来返回一个全局唯一标识W:<br><br> <div id="9zhtjfn" class=UBBPanel> <div id="9f9bz79" class=UBBTitle><img style="MARGIN: 0px 2px -3px 0px" alt=E序代码 src="http://www.mzwu.com/images/code.gif"> E序代码</div> <div id="vvbz7r9" class=UBBContent>Response.Write(Guid.NewGuid().ToString());</div> </div> <br><br>blog6:<br> <table style="TABLE-LAYOUT: fixed"> <tbody> <tr> <td> <div id="7fvz9dx" class=cnt id=blog_text> <p># regular<br>        /// <summary><br>        /// q回大于或等于零且小?System.Int32.MaxValue ?32 位带W号整数?br>        /// </summary><br>        /// <returns></returns><br>        public static void Next1()<br>        {<br>            Random rand = new Random();<br>            Console.WriteLine(rand.Next());<br>        }<br>        /// <summary><br>        /// q回大于或等于零且小?maxValue ?32 位带W号整数<br>        /// </summary><br>        /// <param name="maxValue"></param><br>        /// <returns></returns><br>        public static void Next2(int maxValue)<br>        {<br>            Random rand = new Random();<br>            Console.WriteLine(rand.Next(100));<br>        }<br>        /// <summary><br>        /// q回一个大于或{于 minValue 且小?maxValue ?32 位带W号整数?br>        /// </summary><br>        /// <param name="minValue"></param><br>        /// <param name="maxValue"></param><br>        /// <returns></returns><br>        public static void Next3(int minValue, int maxValue)<br>        {<br>            Random rand = new Random();<br>            Console.WriteLine(rand.Next(1000, 2000));<br>        }</p> <p>/// <summary><br>/// C#中随机生成指定长度的密码<br>/// </summary></p> <p>private static string MakePassword(int pwdLength)<br>   {<br>    //声明要返回的字符?br>    string tmpstr = "";<br>    //密码中包含的字符数组<br>    string pwdchars="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";<br>    //数组索引随机?br>    int iRandNum;<br>    //随机数生成器<br>    Random rnd = new Random();<br>    for(int i=0;i<pwdLength;i++)<br>    {<br>     //RandomcȝNextҎ生成一个指定范围的随机?br>     iRandNum = rnd.Next(pwdchars.Length);<br>     //tmpstr随机d一个字W?br>     tmpstr += pwdchars[iRandNum];<br>    }<br>    return tmpstr;<br>   }<br>#endregular</p> </div> </td> </tr> </tbody> </table> <br><br><br></rdf:description></rdf:rdf></div> <img src ="http://www.shnenglu.com/Amigo/aggbug/64536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Amigo/" target="_blank">Amigo</a> 2008-10-20 21:58 <a href="http://www.shnenglu.com/Amigo/archive/2008/10/20/64536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>matlab 二值图像的形态学变换http://www.shnenglu.com/Amigo/archive/2008/06/28/54857.htmlAmigoAmigoFri, 27 Jun 2008 20:32:00 GMThttp://www.shnenglu.com/Amigo/archive/2008/06/28/54857.htmlhttp://www.shnenglu.com/Amigo/comments/54857.htmlhttp://www.shnenglu.com/Amigo/archive/2008/06/28/54857.html#Feedback2http://www.shnenglu.com/Amigo/comments/commentRss/54857.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/54857.html1、dilate函数
该函数能够实C值图像的膨胀操作Q有以下形式Q?
BW2=dilate(BW1QSE)
BW2=dilate(BW1QSEQ?#8230;Qn)
其中QBW2=dilate(BW1QSE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀操作。输入图像BW1的类型ؓdouble或unit8Q输出图像BW2的类型ؓunit8。BW2=dilate(BW1QSEQ?#8230;Qn)表示执行膨胀操作nơ?
2、erode 函数
该函数能够实C值图像的腐蚀操作Q有以下形式Q?
BW2= erode(BW1QSE)
BW2= erode(BW1QSEQ?#8230;Qn)
其中QBW2= erode(BW1QSE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行腐蚀操作。输入图像BW1的类型ؓdouble或unit8Q输出图像BW2的类型ؓunit8。BW2= erode(BW1QSEQ?#8230;Qn)表示执行腐蚀操作nơ?
3、bwmorph函数
该函数的功能是能实现二值图像Ş态学q算。它的格式如下:
?BW2=bwmorph(BW1Qoperation)
?BW2=bwmorph(BW1QoperationQn)
其中Q对于格式①Qbwmorph函数可对二值图像BW1采用指定的Ş态学q算Q对于格式②Qbwmorph函数可对二值图像BW1采用指定的Ş态学q算nơ。operationZ列字W串之一Q?
‘clean’Q除d立的像素(?包围?)
‘close’Q计二值闭?
‘dilate’Q用l构元素计算囑փ膨胀
‘erode’Q用l构元素计算囑փ侵蚀
4、imclose函数
该函数功能是对灰度图像执行Ş态学闭运,即用同Ll构元素先对囑փq行膨胀操作后进行腐蚀操作。调用格式ؓQ?
IM2=imclose(IM,SE)
IM2=imclose(IM,NHOOD)
5、imopen函数
该函数功能是对灰度图像执行Ş态学开q算Q即使用同样的结构元素先对图像进行腐蚀操作后进行膨胀操作。调用格式ؓQ?
IM2=imopen(IM,SE)
IM2=imopen(IM,NHOOD)
3用MATLAB~程实现囑փd
3.1 二值Ş态学消除囑փ噪声
用二值Ş态学Ҏ对图像中的噪声进行o除的基本思想[4]是:使用h一定Ş态的l构元素d量和提取囑փ中的对应形状Q以辑ֈ消除囑փ噪声的目的。下面是二值Ş态学消除囑փ噪声的一个实例?
首先tire.tif囑փ加入椒盐噪声Q这U噪声前面已l介l过Q它在亮的图像区域内是暗点,而在暗的囑փ区域内是亮点Q再Ҏ噪声囑փq行二值化操作Q再Ҏ噪声囑փq行开启操作,׃q里的结构元素矩阉|噪声的尺寸要大,因而开启的l果是将背景上的噪声点去除了Q最后对前一步得到的囑փq行闭合操作Q将轮胎上的噪声点去掉了?
下面是算法实现的E序代码Q?
I1=imread('tire.tif'); %ȝ度图tire.tif
I2=imnoise(I1,'salt & pepper'); %在图像上加入椒盐噪声
figure,imshow(I2) %昄加椒盐噪声后的灰度图?
I3=im2bw(I1); %把加椒盐噪声后的灰度囑փ二值化
figure,imshow(I3) %昄二值化后的囑փ
I4=bwmorph(I3,'open'); %对二值噪声图像进行二值Ş态学开q算
figure,imshow(I4) %昄开q算后的囑փ
I5=bwmorph(I4,'close'); %对上q图像进行Ş态学闭运?
figure,imshow(I5) %昄最l处理后的图?br>
转自:http://hi.baidu.com/%D2%B9%CB%AE%BE%A7%CD%F5%BD%A8%C7%E0/blog/item/160ea634225dfb385bb5f58b.html


Amigo 2008-06-28 04:32 发表评论
]]>
matlab读txt文ghttp://www.shnenglu.com/Amigo/archive/2008/06/04/52183.htmlAmigoAmigoWed, 04 Jun 2008 10:13:00 GMThttp://www.shnenglu.com/Amigo/archive/2008/06/04/52183.htmlhttp://www.shnenglu.com/Amigo/comments/52183.htmlhttp://www.shnenglu.com/Amigo/archive/2008/06/04/52183.html#Feedback1http://www.shnenglu.com/Amigo/comments/commentRss/52183.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/52183.html法一Q?br>fid1=fopen('fx.txt','r');Q得到文件号
[f,count]=fscanf(fid,'%f %f',[12,90]);
Q把文g?的数据读到f中。其中f是[12 90]的矩?br>Q这?%f %f'表示d数据的Ş势,他是按原始数据型d
fclose(fid);Q关闭文?br>
法二Q?br>load data.txt
data

法三Q?br>a=importdata('data.txt');


Amigo 2008-06-04 18:13 发表评论
]]>
在VC中创建DLL文g的方法步?/title><link>http://www.shnenglu.com/Amigo/archive/2008/05/14/49874.html</link><dc:creator>Amigo</dc:creator><author>Amigo</author><pubDate>Wed, 14 May 2008 13:59:00 GMT</pubDate><guid>http://www.shnenglu.com/Amigo/archive/2008/05/14/49874.html</guid><wfw:comment>http://www.shnenglu.com/Amigo/comments/49874.html</wfw:comment><comments>http://www.shnenglu.com/Amigo/archive/2008/05/14/49874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Amigo/comments/commentRss/49874.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Amigo/services/trackbacks/49874.html</trackback:ping><description><![CDATA[<p>  <strong>一.Win32动态链接库</strong></p> <p>  <strong><font color=#e66b1a>1.<nobr oncontextmenu="return false;" onmousemove=kwM(0); id=key0 onmouseover="kwE(event,0, this);" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">制作</nobr>的步骤:</font></strong></p> <p>  (1)新徏WIN32 Dynamic-link Library工程Q工E名为MyDllQ选择A simple DLL projectcd?/p> <p>  (2)MyDll.h的内容如下:</p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  extern "C" _declspec(dllexport) int sum(int a,int b);//本文所有的例子只有一个sum卛_法函数?/td> </tr> </tbody> </table> </p> <p>  (3)MyDll.cpp的内容如?</p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  #include "stdafx.h" <br>  #include "windows.h" <br>  #include "MyDll.h" <br>  BOOL APIENTRY DllMain( <br>  HANDLE hModule, <br>  DWORD ul_reason_for_call, <br>  LPVOID lpReserved <br>  ) <br>  { <br>  return TRUE; <br>  } <br>  extern "C" _declspec(dllexport)int sum(int a, int b) <br>  { <br>  return a+b; <br>  }</td> </tr> </tbody> </table> </p> <p>  (4)~译之后产生了MyDll.lib与MyDll.dll两个文g?/p> <p>  <strong><font color=#e66b1a>2.使用ҎQ?/font></strong></p> <p>  (1).隐式调用法: MyDll.lib和MyDll.h拯到需?nobr oncontextmenu="return false;" onmousemove=kwM(3); id=key3 onmouseover="kwE(event,3, this);" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">应用</nobr>该DLL的工E的目录下,MyDll.dll拯C生的应用<nobr oncontextmenu="return false;" onmousemove=kwM(1); id=key1 onmouseover="kwE(event,1, this);" onclick="return kwC();" onmouseout="kwL(event, this);" target="_blank">E序</nobr>的目录下Qƈ在需要应用该DLL中的函数的CPP文g中添加如下几行:</p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  #include "MyDll.h" <br>  #pragma comment(lib,"MyDll");</td> </tr> </tbody> </table> </p> <p>  (2).昄调用法:MyDll.lib和MyDll.h拯到需要应用该DLL的工E的目录下,MyDll.dll拯C生的应用E序的目录下Qƈ在需要应用该DLL中的函数的CPP文g中包含头文gQ如Q?/p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  #include "MyDll.h"</td> </tr> </tbody> </table> </p> <p>  同时q需要在Project->Setting->Link->Object/library modules的框中增加MyDll.libq个库?/p> <p>  <strong>?MFC动态链接库</strong></p> <p>  <strong><font color=#e66b1a>1.制作的步骤:</font></strong></p> <p>  (1)新徏MFC AppWizard(dll)工程Q工E名为MFCDllQ选择Regular DLL using shared MFC DLLcd?/p> <p>  (2)在生成的MFCDll.cpp文g后面增加下面几行Q?/p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  int sum(int a, int b) <br>  { <br>  return a+b; <br>  }</td> </tr> </tbody> </table> </p> <p>  (3)在生成的MFCDll.def文g后面增加如下Q?/p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  sum @1 ;表示W一个函数是sum</td> </tr> </tbody> </table> </p> <p>  (4)~译后会产生两个文gMFCDll.lib,MFCDll.dll</p> <p>  <strong><font color=#e66b1a>2.使用Ҏ</font></strong></p> <p>  (1)隐式调用法: MFCDll.lib拯到需要应用该DLL的工E的目录下,MyDll.dll拯C生的应用E序的目录下Qƈ在需要应用该DLL中的函数的CPP文g中添加如下几行:</p> <p>  //注意q里没有在MFCDll.h中声明函敎ͼ所以不能直接包含MFCDll.h来声明函数?/p> <p> <table cellSpacing=0 cellPadding=6 width="95%" align=center border=0> <tbody> <tr> <td bgColor=#f3f3f3><font size=+0>以下是引用片D:</font><br>  #pragma comment(lib,"MFCDll"); <br>  int sum(int a, int b);</td> </tr> </tbody> </table> </p> <p>  //当然如果你的DLL中有很多函数Q那可以另外写个MFCDll.hQ包含所有的函数声明Q然后直接将头文件包含进?/p> <p>  (2)昄调用法:与Win32的调用方法一P不需?pragma comment(lib,"MFCDll");Q但是需要在Project->Setting->Link->Object/library modules的框中增加MFCDll.libq个库?br><br>作者:<span><font color=#666666>佚名</font></span> 来源:中国自学~程|?/p> <img src ="http://www.shnenglu.com/Amigo/aggbug/49874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Amigo/" target="_blank">Amigo</a> 2008-05-14 21:59 <a href="http://www.shnenglu.com/Amigo/archive/2008/05/14/49874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Matlab的一个小动画(带源文g)http://www.shnenglu.com/Amigo/archive/2008/04/05/46285.htmlAmigoAmigoFri, 04 Apr 2008 18:59:00 GMThttp://www.shnenglu.com/Amigo/archive/2008/04/05/46285.htmlhttp://www.shnenglu.com/Amigo/comments/46285.htmlhttp://www.shnenglu.com/Amigo/archive/2008/04/05/46285.html#Feedback6http://www.shnenglu.com/Amigo/comments/commentRss/46285.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/46285.html

应同学之托第一ơ尝试用matlab做动画,弄了一下午加一晚上l于弱弱地搞定了?br>先做了个GUI界面Q点击Debug —run׃跛_个对话框Q然后输入参敎ͼ如果参数是负数的话就跛_警告H口。如下图Q?br>



          然后开始动MQ?br>

下边是源文gQ?br>function varargout = mmmove(varargin)
% MMMOVE M-file for mmmove.fig
%      MMMOVE, by itself, creates a new MMMOVE or raises the existing
%      singleton*.
%
%      H = MMMOVE returns the handle to a new MMMOVE or the handle to
%      the existing singleton*.
%
%      MMMOVE('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in MMMOVE.M with the given input arguments.
%
%      MMMOVE('Property','Value',...) creates a new MMMOVE or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before mmmove_OpeningFunction gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to mmmove_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help mmmove

% Last Modified by GUIDE v2.5 04-Apr-2008 21:41:08

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @mmmove_OpeningFcn, ...
                   'gui_OutputFcn',  @mmmove_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before mmmove is made visible.
function mmmove_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to mmmove (see VARARGIN)

% Choose default command line output for mmmove
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes mmmove wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = mmmove_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --------------------------------------------------------------------
function Debug_Callback(hObject, eventdata, handles)
% hObject    handle to Debug (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function run_Callback(h, eventdata, handles)
% hObject    handle to run (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
prompt={'误入速度v:','误入长度L:','误入半径r:'};
defans={'5','10','2'};
v=5;L=10;r=2;
p=inputdlg(prompt,'Input',1,defans);
v=str2double(p(1));
L=str2double(p(2));
r=str2double(p(3));
%guidata(h,handles)
if v<=0|L<=0|r<=0
    warndlg('非法输入','警告')
else
ox1=r;oy1=r;ox2=r+L;oy2=r;
x1=r:0.015*v:r+L;
y1=2*r*ones(size(x1));
thita=0:0.015*v/r:pi;
x2=sin(thita)*r+ox2;
y2=cos(thita)*r+oy2;
x3=r+L:-0.015*v:r;
y3=zeros(size(x3));
x4=-sin(thita)*r+ox1;
y4=-cos(thita)*r+oy1;
x=[x1 x2 x3 x4 x1(1)];
y=[y1 y2 y3 y4 y1(1)];
plot(x,y);
axis([0,2*r+L,-1,2*r+1]);
h_text=text(0,-2,['L = ' num2str(L) ' , ' 'r = ' num2str(r) ' , ' 'v = ' num2str(v)]);
set(h_text,'fontSize',13);
axis equal
set(gca,'Visible','off')
hm=line(r,2*r,'color','red','marker','.','markersize',37,'erasemode','xor');
while 1
    for i=1:length(x)
        set(hm,'xdata',x(i),'ydata',y(i));
        pause(0.0003)
        drawnow
    end
end
end

Z能让球不停的@环运动,我加了while 1的语句?br>q样在关闭窗口的时候,matlab的命令窗里就会蟩Z堆错误,大概是因为for循环里涉及到的hm随着figure的关闭删除了Q但是程序仍然在q行Q所以蟩Z西说hm是invalid的。是不是可以放个停止E序的函数放figure或者axis的deleteFcn里头Q不q没扑ֈ那样的函数?br>期待好心大牛指教。。?br>q有是速度控制问题Q用计算的的速度控制Q运行明昑ց慢,大概是程序自p行也耗时吧,q个也不知道怎么办。不q后来看到篇文章说用timer对象来生动ȝQ很不错的样子?br>先引用下来:

MATLAB GUI中利用定时器制作动画

Q本文ؓLiuxqsmile原创Q{载请保留原文链接Q?br>MATLAB中提供了一些动态显C图形的例子Q例如vibes、truss{,但他们的E序l构都和由GUIDE产生的M文g的结构不同。truss中用while循环来更新图形窗口,pause函数来控制更新的速度。这Ll构是不适合攑֜某一个子函数中来执行的,否则E序在执行该子函数时无法响应用户的其它操作,只能一开始就讄l止条gQ等待动ȝ自然l束?br>MATLAB中的定时器timer可以定时触发Q周期性地执行指定的函敎ͼ我们可以据此来实现绘囄自动更新Q而不会媄响整个GUI对用户其它操作的响应?br>比如我们要让一个曲面随旉周期性地变ŞQ类似vibes中的情ŞQ按?#8220;开?#8221;按钮后,曲面开始周期振动,同时我们可以调整振幅大小、周期的长短。所不同的是我们一切都在子函数中完成?br>在GUIDE中徏立界面元素后Q在“开?#8221;按钮的callback中徏立一个定时器timer对象object
handles.timer = timer('Period',0.05,'ExecutionMode','FixedRate',
... 'TimerFcn',{@PlotUpdate,handles});
Period是触发的周期Q这里设|ؓ0.05sQExecutionMode是执行的方式Q可以有三种选择Q对于不需要精控制时序的动画的媄响不大,TimerFcn指定触发时所执行函数的句柄,在这里我们徏立一个函数PlotUpdate来执行绘囑֑令,handles作ؓ参数传递到PlotUpdate中去?br>注意PlotUpdate的定义:
function PlotUpdate(obj,events,handles)
前两个参数是必不可少的,最后的handles才是用户传递的数据。在q个函数中你基本上可以无视前两个参数Q按照曲面的q动势产生新的点坐标Q然后用set命o新的坐标赋l曲?面片patch)对象的Vertices属性。drawnow更新可以了。你可以用曲面对象的UserData属性存攑ֽ前振动的q值相位等参数?br>然后?#8220;停止”按钮的callback中stop(handles.timer)停止定时器,可以停止自动绘图了?br>?#8220;增大振幅”按钮的callback中对振幅参数作修攏V?br>排除了一些小问题后,你的曲面l于可以动v来了Q按“增大振幅”{也没有影响囑Ş的运动,真的?#8220;一点媄响都没有”啊!
问题出在哪里呢?原来Q当定时器第一ơ触发时Q用h定的参数被传递到响应函数中执行,以后每一ơ触发,都是使用的这同一l参敎ͼq不会随着E序的运行而更新。好了,现在可以?br>“增大振幅”中重新赋一ơ参?br>set(handles.timer,'TimerFcn',{@PlotUpdate,handles})Q?br>怎么P辑ֈ你的要求了吧Q想知道更多QMATLAB Help的index中输入timerQ够多了吧?/p>



动画下蝲Q?span style="COLOR: red">下蝲后,用matlab7.0以上的版本可q行?/span>



Amigo 2008-04-05 02:59 发表评论
]]>
卡尔曼o??Kalman Filteringhttp://www.shnenglu.com/Amigo/archive/2008/04/01/45914.htmlAmigoAmigoTue, 01 Apr 2008 06:24:00 GMThttp://www.shnenglu.com/Amigo/archive/2008/04/01/45914.htmlhttp://www.shnenglu.com/Amigo/comments/45914.htmlhttp://www.shnenglu.com/Amigo/archive/2008/04/01/45914.html#Feedback4http://www.shnenglu.com/Amigo/comments/commentRss/45914.htmlhttp://www.shnenglu.com/Amigo/services/trackbacks/45914.html1Q?nbsp;   什么是卡尔曼o波器
QWhat is the Kalman Filter?Q?br>
在学习卡曼滤L器之前,首先看看Z么叫“卡尔?#8221;。跟其他著名的理论(例如傅立叶变换,泰勒U数{等Q一P卡尔g是一个h的名字,而跟他们不同的是Q他是个C人!

卡尔曼全名Rudolf Emil KalmanQ匈牙利数学Ӟ1930q出生于匈牙利首都布达佩斯?953Q?954q于ȝ理工学院分别获得甉|工程学士及硕士学位?957q于哥u比亚大学获得博士学位。我们现在要学习的卡曼滤L器,正是源于他的博士论文?960q发表的论文《A New Approach to Linear Filtering and Prediction Problems》(U性o波与预测问题的新ҎQ。如果对q编论文有兴,可以到这里的地址下蝲Q?/span> http://www.cs.unc.edu/~welch/media/pdf/Kalman1960.pdf ?/span>

单来_卡尔曼o波器是一?#8220;optimal recursive data processing algorithmQ最优化自回归数据处理算法)”。对于解军_大部分的问题Q他是最优,效率最高甚x最有用的。他的广泛应用已l超q?0q_包括机器人导航,控制Q传感器数据融合甚至在军事方面的雯
以及导弹q踪{等。近q来更被应用于计机囑փ处理Q例如头脸识别,囑փ分割Q图像边~检等{?br>
2Q卡曼滤L器的介绍
QIntroduction to the Kalman FilterQ?br>
Z可以更加Ҏ的理解卡曼滤L器,q里会应用Ş象的描述Ҏ来讲解,而不是像大多数参考书那样|列一大堆的数学公式和数学W号。但是,他的5条公式是其核心内宏V结合现代的计算机,其实卡尔曼的E序相当的简单,只要你理解了他的?条公式?br>
在介l他?条公式之前,先让我们来根据下面的例子一步一步的探烦?br>
假设我们要研I的对象是一个房间的温度。根据你的经验判断,q个戉K的温度是恒定的,也就是下一分钟的温度等于现在这一分钟的温度(假设我们用一分钟来做旉单位Q。假设你对你的经验不?00%的相信,可能会有上下偏差几度。我们把q些偏差看成是高斯白噪声QWhite Gaussian NoiseQ,也就是这些偏差跟前后旉是没有关pȝ而且W合高斯分配QGaussian DistributionQ。另外,我们在房间里放一个温度计Q但是这个温度计也不准确的,量g比实际值偏差。我们也把这些偏差看成是高斯白噪声?br>
好了Q现在对于某一分钟我们有两个有关于该房间的温度|你根据经验的预测|
的预|和温度计的|量|。下面我们要用这两个值结合他们各自的噪声来估出戉K的实际温度倹{?br>
假如我们要估k时刻的是实际温度倹{首先你要根据k-1时刻的温度|来预k时刻的温度。因Z怿温度是恒定的Q所以你会得到k时刻的温度预值是跟k-1时刻一LQ假设是23度,同时该值的高斯噪声的偏差是5度(5是这样得到的Q如果k-1时刻估算出的最优温度值的偏差?Q你对自己预的不确定度?度,他们qx相加再开方,是5Q。然后,你从温度计那里得Ck时刻的温度|假设?5度,同时该值的偏差?度?br>
׃我们用于估算k时刻的实际温度有两个温度|分别?3度和25度。究竟实际温度是多少呢?怿自己q是怿温度计呢Q究竟相信谁多一点,我们可以用他们的covariance来判断。因为Kg^2=5^2/(5^2+4^2)Q所以Kg=0.78Q我们可以估出k时刻的实际温度值是Q?3+0.78*(25-23)=24.56度。可以看出,因ؓ温度计的covariance比较(比较怿温度计)Q所以估出的最优温度值偏向温度计的倹{?br>
现在我们已经得到k时刻的最优温度gQ下一步就是要q入k+1时刻Q进行新的最优估。到现在为止Q好像还没看C么自回归的东西出现。对了,在进入k+1时刻之前Q我们还要算出k时刻那个最优|24.56度)的偏差。算法如下:((1-Kg)*5^2)^0.5=2.35。这里的5是上面的k时刻你预的那个23度温度值的偏差Q得出的2.35是q入k+1时刻以后k时刻估算出的最优温度值的偏差Q对应于上面?Q?br>
是q样Q卡曼滤L器就不断的把covariance递归Q从而估出最优的温度倹{他q行的很快,而且它只保留了上一时刻的covariance。上面的KgQ就是卡曼增益QKalman GainQ。他可以随不同的时刻而改变他自己的|是不是很奇Q?br>
下面pa归正传,讨论真正工程
上的卡尔曹{?br>
3Q?nbsp;   卡尔曼o波器法
QThe Kalman Filter AlgorithmQ?br>
在这一部分Q我们就来描q源于Dr Kalman 的卡曼滤L器。下面的描述Q会涉及一些基本的概念知识Q包括概率(ProbabilityQ,随即变量QRandom VariableQ,高斯或正态分配(Gaussian DistributionQ还有State-space Model{等。但对于卡尔曼o波器的详l证明,q里不能一一描述?br>
首先Q我们先要引入一个离散控制过E的pȝ。该
可用一个线性随机微分方E(Linear Stochastic Difference equationQ来描述Q?br>X(k)=A X(k-1)+B U(k)+W(k)
再加?/span>的测量|
Z(k)=H X(k)+V(k)
上两式子中,X(k)是k时刻?/span>状态,U(k)是k时刻?/span>的控刉。A和B是系l参敎ͼ对于多模?/span>Q他们ؓ矩阵。Z(k)是k时刻的测量|H是测量系l的参数Q对于多量QH为矩cW(k)和V(k)分别表示q程和测量的噪声。他们被假设成高斯白噪声(White Gaussian Noise)Q他们的covariance 分别是QQRQ这里我们假设他们不?/span>状态变化而变化)?br>
对于满上面的条?U性随机微?/span>Q?span style="COLOR: #0000ff">q程和测量都是高斯白噪声)Q卡曼滤L器是最优的信息处理器。下面我们来用他们结合他们的covariances 来估?/span>的最优化输出Q类g一节那个温度的例子Q?br>
首先我们要利用系l的q程模型Q来预测下一状态的pȝ。假讄在的状态是kQ根据系l的模型Q可以基?/span>的上一状态而预出现在状态:
X(k|k-1)=A X(k-1|k-1)+B U(k) ……….. (1)
?1)中,X(k|k-1)是利用上一状态预的l果QX(k-1|k-1)是上一状态最优的l果QU(k)为现在状态的控制量,如果没有控制量,它可以ؓ0?br>
到现在ؓ止,我们?/span>l果已经更新了,可是Q对应于X(k|k-1)的covarianceq没更新。我们用P表示covarianceQ?br>P(k|k-1)=A P(k-1|k-1) A’+Q ……… (2)
?2)中,P(k|k-1)是X(k|k-1)对应的covarianceQP(k-1|k-1)是X(k-1|k-1)对应的covarianceQA’表示A的{|矩阵,Q?/span>q程的covariance。式?Q?是卡尔曼o波器5个公式当中的前两个,也就是对的预?br>
现在我们有了现在状态的预测l果Q然后我们再攉现在状态的量倹{结合预值和量|我们可以得到现在状?k)的最优化估算值X(k|k)Q?br>X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……… (3)
其中Kg为卡曼增益(Kalman Gain)Q?br>Kg(k)= P(k|k-1) H’ / (H P(k|k-1) H’ + R) ……… (4)

到现在ؓ止,我们已经得到了k状态下最优的估算值X(k|k)。但是ؓ了要另卡曼滤L器不断的q行下去直到
q程l束Q我们还要更新k状态下X(k|k)的covarianceQ?br>P(k|k)=QI-Kg(k) HQP(k|k-1) ……… (5)
其中I ?的矩阵,对于单模型单量QI=1。当
q入k+1状态时QP(k|k)是式子(2)的P(k-1|k-1)。这P法可以自回归的运下厅R?br>
卡尔曼o波器的原理基本描qCQ式?Q?Q?Q??是他的5 个基本公式。根据这5个公式,可以很容易的实现计算机的E序?br>
下面Q我会用E序举一个实际运行的例子。。?br>4Q?nbsp;   单例?br>QA Simple ExampleQ?br>
q里我们l合W二W三节,举一个非常简单的例子来说明卡曼滤L器的工作q程。所丄例子是进一步描q第二节的例子,而且q会配以E序模拟l果?br>
ҎW二节的描述Q把戉K看成一个系l,然后对这?/span>建模。当Ӟ我们见的模型不需要非常地_。我们所知道的这个房间的温度是跟前一时刻的温度相同的Q所以A=1。没有控刉Q所以U(k)=0。因此得出:
X(k|k-1)=X(k-1|k-1) ……….. (6)
式子Q?Q可以改成:
P(k|k-1)=P(k-1|k-1) +Q ……… (7)

因ؓ量的值是温度计的Q跟温度直接对应Q所以H=1。式?Q?Q?可以Ҏ以下Q?br>X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1)) ……… (8)
Kg(k)= P(k|k-1) / (P(k|k-1) + R) ……… (9)
P(k|k)=Q?-Kg(k)QP(k|k-1) ……… (10)

现在我们模拟一l测量g入。假设房间的真实温度?5度,我模拟了200个测量|q些量值的q_gؓ25度,但是加入了标准偏差ؓ几度的高斯白噪声Q在图中U)?br>
Z令卡曼滤L器开始工作,我们需要告诉卡曼两个零时ȝ初始|是X(0|0)和P(0|0)。他们的g用太在意Q随便给一个就可以了,因ؓ随着卡尔曼的工作QX会逐渐的收敛。但是对于PQ一般不要取0Q因样可能会令卡曼完全怿你给定的X(0|0)?/span>最优的Q从而ɽ法不能收敛。我选了X(0|0)=1度,P(0|0)=10?br>
?/span>的真实温度ؓ25度,图中用黑U表C。图中红U是卡尔曼o波器输出的最优化l果Q该l果在算法中讄了Q=1e-6QR=1e-1Q?br>
作?/strong>Qjearome


Amigo 2008-04-01 14:24 发表评论
]]>
原谅我的L?/title><link>http://www.shnenglu.com/Amigo/archive/2008/03/16/44600.html</link><dc:creator>Amigo</dc:creator><author>Amigo</author><pubDate>Sun, 16 Mar 2008 04:29:00 GMT</pubDate><guid>http://www.shnenglu.com/Amigo/archive/2008/03/16/44600.html</guid><wfw:comment>http://www.shnenglu.com/Amigo/comments/44600.html</wfw:comment><comments>http://www.shnenglu.com/Amigo/archive/2008/03/16/44600.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/Amigo/comments/commentRss/44600.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/Amigo/services/trackbacks/44600.html</trackback:ping><description><![CDATA[<span style="COLOR: #0000ff">渐渐明白<br>沉醉不一定是因ؓ?br>渐渐明白<br>x对自己坦白<br>渐渐明白<br>不爱不一定放得开<br>渐渐明白<br>我越来越对你依赖<br><br>如何告白<br>不是p你守?br>如何告白<br>惛_已成为我功课<br>如何告白<br>习惯有你的天I?br>如何告白<br>你是我最珍惜的朋?br><br>我不敢靠q却更害怕失?br>才会让暧昧飘扬O?br>多少ơ决定不再见?br>多少ơQ性地重新联系<br><br>我不敢靠q却更害怕失?br>才会在你说想我时调{w去<br>我真的不是故?br>有种温柔让寂寞的人难以抗?br><br>会否有天<br>你看清我玩的游戏<br>会否有天<br>我让你恨d?br>会否有天<br>我无助地独自哭泣<br>会否有天<br>我终于长大找到自?br><br>你说<br>我可以一个h不用再依赖着?br>你说<br>q段路已是珍늚回忆<br>原谅?br>一直Q性注定这悲伤的结局</span> <br><img height=584 alt="" src="http://www.shnenglu.com/images/cppblog_com/amigo/20060801152.jpg" width=730 border=0> <img src ="http://www.shnenglu.com/Amigo/aggbug/44600.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/Amigo/" target="_blank">Amigo</a> 2008-03-16 12:29 <a href="http://www.shnenglu.com/Amigo/archive/2008/03/16/44600.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.zzrich.cn" target="_blank">999þþƷ</a>| <a href="http://www.0x5e.cn" target="_blank">ŷһþþþþþô</a>| <a href="http://www.haoq98.cn" target="_blank">ݺݾþ</a>| <a href="http://www.lslvyekj.cn" target="_blank">þ99ƷþֻоƷ</a>| <a href="http://www.42856.com.cn" target="_blank">þۺۺϾþ97ɫ</a>| <a href="http://www.0553fc.cn" target="_blank">þ2019Ļ</a>| <a href="http://www.juzijia.cn" target="_blank">þþþþþƷþþþ</a>| <a href="http://www.itsidekick.cn" target="_blank">1000Ʒþþþþþþ</a>| <a href="http://www.aeuou.cn" target="_blank">99þþƷѿһ </a>| <a href="http://www.acesolo.cn" target="_blank">ձþþþþĻ</a>| <a href="http://www.davidgroup.com.cn" target="_blank">99þþƷž޾Ʒ</a>| <a href="http://www.zhinvest.cn" target="_blank">ƷһþþƷɬ</a>| <a href="http://www.zhijin168.com.cn" target="_blank">˾þþƷ鶹</a>| <a href="http://www.tprs.com.cn" target="_blank">þۺϾɫۺŷݺ</a>| <a href="http://www.xiaosizhi.cn" target="_blank">ȾþӾþþƷ18</a>| <a href="http://www.czzhiyou.cn" target="_blank">99ȶǾƷþþþþ</a>| <a href="http://www.k1877.cn" target="_blank">þAV߳AVAV</a>| <a href="http://www.13xb.com.cn" target="_blank">þùƷһ</a>| <a href="http://www.jiudexn.cn" target="_blank">99þѹۺϾƷ</a>| <a href="http://www.nba592.cn" target="_blank">㽶aaþëƬ</a>| <a href="http://www.leftbank-cn.cn" target="_blank">ѹ99þþ㽶</a>| <a href="http://www.sklly.cn" target="_blank">avԾþþþa</a>| <a href="http://www.llqu.cn" target="_blank">޹˾þۺҰ</a>| <a href="http://www.ukja.cn" target="_blank">Ʒþþþû</a>| <a href="http://www.cqbus.com.cn" target="_blank">ɫۺϾþĻ</a>| <a href="http://www.bhga.cn" target="_blank">þҹƵ</a>| <a href="http://www.qp8978.cn" target="_blank">þùһ</a>| <a href="http://www.jumeiba.cn" target="_blank">ž99Ʒþþþþ</a>| <a href="http://www.puerteam.cn" target="_blank">Ʒþþþþô</a>| <a href="http://www.wdmdg.cn" target="_blank">ɫۺϾþʮ·</a>| <a href="http://www.taotaoduoduo.cn" target="_blank">ѾþþƷ99reѾy</a>| <a href="http://www.buchaqian.org.cn" target="_blank">þþƷĻһ</a>| <a href="http://www.56dn.cn" target="_blank">99þùۺϾƷԭ </a>| <a href="http://www.gmxd.net.cn" target="_blank">þۺ³³</a>| <a href="http://www.p3gp.cn" target="_blank">þ99Ʒžžžþ</a>| <a href="http://www.kyxu.cn" target="_blank">99þþƷѾƷ</a>| <a href="http://www.gxsc.net.cn" target="_blank">þۺϾɫۺ97_þþ</a>| <a href="http://www.shilanghong.cn" target="_blank">www.þ99</a>| <a href="http://www.dmc-dz.cn" target="_blank">˾Ʒþ޸岻</a>| <a href="http://www.fcsyx.cn" target="_blank">ŷһƷþ</a>| <a href="http://www.jbl21.cn" target="_blank">AAAþþþƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>