Skip navigation.

Shuixuan Chen

Emai to: shxchen0592@126.com

STICKY POST

Matlab 论坛

:star: 研学论坛上很不错的一个板块,有空来发帖

点击进入Matlab论坛



Matlab简介:
MATLAB 的名称源自 Matrix Laboratory ,它是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用
于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用 MATLAB 产品的开放
式结构,可以非常容易地对 MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完
善 MATLAB 产品以提高产品自身的竞争能力。
主要的典型应用包括:
·控制系统的应用与开发——快速控制原型与硬件在回路仿真的统一平台 dSPACE
·信号处理系统的设计与开发——全系统仿真与快速原型验证, TI DSP 、 Lyrtech 等信号处理产品软硬件平台
·通信系统设计与开发——结合 RadioLab 3G 和 Candence 等产品
·机电一体化设计与开发——全系统的联合仿真,结合 Easy 5,Adams等。

世界领先的非线性曲线拟合综合优化软件包 绿色版

点击下载

1stOpt(First Optimization)是七维高科有限公司(7D-Soft High Technology Inc.)独立开发,拥有完全自主知识产权的一套数学优化分析综合工具软件包。在非线性回归,曲线拟合,非线性复杂工程模型参数估算求解等领域傲视群雄,首屈一指,居世界领先地位。除去简单易用的界面,其计算核心是基于七维高科有限公司科研人员十数年的革命性研究成果【通用全局优化算法】 (Universal Global Optimization - UGO),该算法之最大特点是克服了当今世界上在优化计算领域中使用迭代法必须给出合适初始值的难题,即用户勿需给出参数初始值,而由1stOpt随机给出,通过其独特的全局优化算法,最终找出最优解。以非线性回归为例,目前世界上在该领域最有名的软件工具包诸如OriginPro,Matlab,SAS,SPSS,DataFit,GraphPad,TableCurve2D,TableCurve3D等,均需用户提供适当的参数初始值以便计算能够收敛并找到最优解。如果设定的参数初始值不当则计算难以收敛,其结果是无法求得正确结果。而在实际应用当中,对大多数用户来说,给出(猜出)恰当的初始值是件相当困难的事,特别是在参数量较多的情况下,更无异于是场噩梦。而1stOpt凭借其超强的寻优,容错能力,在大多数情况下(大于90%),从任一随机初始值开始,都能求得正确结果。

国内外类似软件概况
遇到曲线拟合,非线性回归等数据统计分析问题时,国人首先都会不由自主的想到SAS、SPSS、OrginePro等国外厂商生产的大牌统计分析软件。的确,在数据综合分析领域,国外软件无疑占绝对统治地位。如在非线性曲线拟合,参数优化方面,名声大,应用广的有诸如OriginPro,Matlab,SAS,SPSS,DataFit,GraphPad,TableCurve2D,TableCurve3D等。无论这些软件界面,历史,名声如何,最常用算法有麦夸特法(Levenberg-Marquardt)或简面体爬山法(Simplex Method)等,均可归属于局部最优法。因而如何有效地确定参数初始值始终是难以克服的瓶颈,由于此,一些实际问题可能永远无法获得正解。国内方面,因无自己独特有效的技术理论与方法,虽有个别分析软件面市,与上述国外类似产品相比,还有极大差距,即使在国内也无竞争优势,在国际上就更无声影了。而1stOpt凭借自己革命性的算法理论,在非线性拟合,参数估算等优化领域强于目前世界上任何已知软件包,其英文版已远销美国,德国,法国,英国,芬兰,瑞典,荷兰,南非,澳大利亚,新西兰,土耳其等国。

【转帖】传感器选用原则


现代传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。测量结果的成败,在很大程度上取决于传感器的选用是否合理。

1、根据测量对象与测量环境确定传感器的类型

要进行一个具体的测量工作,首先要考虑采用何种原理的传感器,这需要分析多方面的因素之后才能确定。因为,即使是测量同一物理量,也有多种原理的传感器可供选用,哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小;被测位置对传感器体积的要求;测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,价格能否承受,还是自行研制。
  在考虑上述问题之后就能确定选用何种类型的传感器,然后再考虑传感器的具体性能指标。

2、灵敏度的选择

  通常,在传感器的线性范围内,希望传感器的灵敏度越高越好。因为只有灵敏度高时,与被测量变化对应的输出信号的值才比较大,有利于信号处理。但要注意的是,传感器的灵敏度高,与被测量无关的外界噪声也容易混入,也会被放大系统放大,影响测量精度。因此,要求传感器本身应具有较高的信噪比,尽员减少从外界引入的干扰信号。
  传感器的灵敏度是有方向性的。当被测量是单向量,而且对其方向性要求较高,则应选择其它方向灵敏度小的传感器;如果被测量是多维向量,则要求传感器的交叉灵敏度越小越好。

3、频率响应特性

  传感器的频率响应特性决定了被测量的频率范围,必须在允许频率范围内保持不失真的测量条件,实际上传感器的响应总有一定延迟,希望延迟时间越短越好。
  传感器的频率响应高,可测的信号频率范围就宽,而由于受到结构特性的影响,机械系统的惯性较大,固有频率低的传感器可测信号的频率较低。
  在动态测量中,应根据信号的特点(稳态、瞬态、随机等)响应特性,以免产生过火的误差。

4、线性范围

  传感器的线形范围是指输出与输入成正比的范围。以理论上讲,在此范围内,灵敏度保持定值。传感器的线性范围越宽,则其量程越大,并且能保证一定的测量精度。在选择传感器时,当传感器的种类确定以后首先要看其量程是否满足要求。
  但实际上,任何传感器都不能保证绝对的线性,其线性度也是相对的。当所要求测量精度比较低时,在一定的范围内,可将非线性误差较小的传感器近似看作线性的,这会给测量带来极大的方便。

5、稳定性

  传感器使用一段时间后,其性能保持不变化的能力称为稳定性。影响传感器长期稳定性的因素除传感器本身结构外,主要是传感器的使用环境。因此,要使传感器具有良好的稳定性,传感器必须要有较强的环境适应能力。
  在选择传感器之前,应对其使用环境进行调查,并根据具体的使用环境选择合适的传感器,或采取适当的措施,减小环境的影响。
  传感器的稳定性有定量指标,在超过使用期后,在使用前应重新进行标定,以确定传感器的性能是否发生变化。
  在某些要求传感器能长期使用而又不能轻易更换或标定的场合,所选用的传感器稳定性要求更严格,要能够经受住长时间的考验。

6、精度

  精度是传感器的一个重要的性能指标,它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以,不必选得过高。这样就可以在满足同一测量目的的诸多传感器中选择比较便宜和简单的传感器。
  如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。
  对某些特殊使用场合,无法选到合适的传感器,则需自行设计制造传感器。自制传感器的性能应满足使用要求。

【转帖】传感器选用原则


现代传感器在原理与结构上千差万别,如何根据具体的测量目的、测量对象以及测量环境合理地选用传感器,是在进行某个量的测量时首先要解决的问题。当传感器确定之后,与之相配套的测量方法和测量设备也就可以确定了。测量结果的成败,在很大程度上取决于传感器的选用是否合理。

1、根据测量对象与测量环境确定传感器的类型

要进行一个具体的测量工作,首先要考虑采用何种原理的传感器,这需要分析多方面的因素之后才能确定。因为,即使是测量同一物理量,也有多种原理的传感器可供选用,哪一种原理的传感器更为合适,则需要根据被测量的特点和传感器的使用条件考虑以下一些具体问题:量程的大小;被测位置对传感器体积的要求;测量方式为接触式还是非接触式;信号的引出方法,有线或是非接触测量;传感器的来源,国产还是进口,价格能否承受,还是自行研制。
  在考虑上述问题之后就能确定选用何种类型的传感器,然后再考虑传感器的具体性能指标。

2、灵敏度的选择

  通常,在传感器的线性范围内,希望传感器的灵敏度越高越好。因为只有灵敏度高时,与被测量变化对应的输出信号的值才比较大,有利于信号处理。但要注意的是,传感器的灵敏度高,与被测量无关的外界噪声也容易混入,也会被放大系统放大,影响测量精度。因此,要求传感器本身应具有较高的信噪比,尽员减少从外界引入的干扰信号。
  传感器的灵敏度是有方向性的。当被测量是单向量,而且对其方向性要求较高,则应选择其它方向灵敏度小的传感器;如果被测量是多维向量,则要求传感器的交叉灵敏度越小越好。

3、频率响应特性

  传感器的频率响应特性决定了被测量的频率范围,必须在允许频率范围内保持不失真的测量条件,实际上传感器的响应总有一定延迟,希望延迟时间越短越好。
  传感器的频率响应高,可测的信号频率范围就宽,而由于受到结构特性的影响,机械系统的惯性较大,固有频率低的传感器可测信号的频率较低。
  在动态测量中,应根据信号的特点(稳态、瞬态、随机等)响应特性,以免产生过火的误差。

4、线性范围

  传感器的线形范围是指输出与输入成正比的范围。以理论上讲,在此范围内,灵敏度保持定值。传感器的线性范围越宽,则其量程越大,并且能保证一定的测量精度。在选择传感器时,当传感器的种类确定以后首先要看其量程是否满足要求。
  但实际上,任何传感器都不能保证绝对的线性,其线性度也是相对的。当所要求测量精度比较低时,在一定的范围内,可将非线性误差较小的传感器近似看作线性的,这会给测量带来极大的方便。

5、稳定性

  传感器使用一段时间后,其性能保持不变化的能力称为稳定性。影响传感器长期稳定性的因素除传感器本身结构外,主要是传感器的使用环境。因此,要使传感器具有良好的稳定性,传感器必须要有较强的环境适应能力。
  在选择传感器之前,应对其使用环境进行调查,并根据具体的使用环境选择合适的传感器,或采取适当的措施,减小环境的影响。
  传感器的稳定性有定量指标,在超过使用期后,在使用前应重新进行标定,以确定传感器的性能是否发生变化。
  在某些要求传感器能长期使用而又不能轻易更换或标定的场合,所选用的传感器稳定性要求更严格,要能够经受住长时间的考验。

6、精度

  精度是传感器的一个重要的性能指标,它是关系到整个测量系统测量精度的一个重要环节。传感器的精度越高,其价格越昂贵,因此,传感器的精度只要满足整个测量系统的精度要求就可以,不必选得过高。这样就可以在满足同一测量目的的诸多传感器中选择比较便宜和简单的传感器。
  如果测量目的是定性分析的,选用重复精度高的传感器即可,不宜选用绝对量值精度高的;如果是为了定量分析,必须获得精确的测量值,就需选用精度等级能满足要求的传感器。
  对某些特殊使用场合,无法选到合适的传感器,则需自行设计制造传感器。自制传感器的性能应满足使用要求。

MATLAB中的类

转至http://genial.yculblog.com/post.385612.html>

用法及例子:

类(class)
类是一种数据类型,与普通的数据类型不同的是类不仅包含数据,还包含对数据的操作,类把数据和数据操作方法封装在一起,作为一个整体参与程序的运行。类具有可继承性,创建一个新的类的时候,可以在一个基类中添加成员派生出新类。类的变量和类的实例是不同的,类的实例是动态分配的内存区域,通常称类的实例维“对象”,同一个类可以有不同的实例存在,他们个子有自己的数据,但是数据操作方法是相同的。类的变量可以看作是一个指针,指向类的实例。
在MATLAB中,为了更好地进行数据的封装,更加抽象地描述对象,也定义了类。图2.4.1给出了MATLAB中类的层次结构图,在建立类的结构的时候,可以根据这一层次结构进行设计和继承。

建立一个类

通常一个类应该包含四个基本的成员函数:
构造函数 ―― 与类名相同,可以在其中完成成员初始化的工作;
显示函数 ―― 名为display,用于显示成员的数据;
赋值函数 ―― 名为set,用于设置类成员的数值;
取值函数 ―― 名为get,用于读取类成员的函数。
与C++的类不同的是,MATLAB的类不需要特别的析构函数。如果类用到了一些特殊的内容需要释放的话,可以编写一个成员函数,比如classclear,用包来释放所占用的资源。
下面用一个简单的例子类介绍一些类如何使用。定义一个名为list的类,它有两个数据成员x和y,希望通过一个成员函数prod()来获取x和y的乘积。本例的类是这样的:
类名: list
成员变量:x,y
成员函数:
list:构造函数
display:显示函数
get:取值函数
set:赋值函数
prod:计算函数
现在就来建立它。
(1) 在工作目录上建立一个子目录(以笔者的习惯为例):
cd E:\MyProgram\matlab7\chap4
mkdir @list  
类名前面要加上一个字符'@’,对于这样形式的目录里所有保存的M文件,MATLAB都认为是类的成员函数。
(2) 编写5个成员函数的M文件保存在E:\MyProgram\matlab7\chap4\@list 目录下:
% list.m
function d = list(x,y)
d.x=x;
d.y=y;
d=class(d,'list');  
% display.m
function display(d)
fprintf('list class:\n');
fprintf('x=%d\n',d.x);
fprintf('y=%d\n',d.y);  
% get.m
function val = get(d,prop_name)
switch prop_name
   case 'x'
       val=d.x;
   case 'y'
       val=d.y;
   otherwise
       error([prop_name,'is not a valid list property']);
end  
%set.m
function d = set(d,varargin)  % 该函数的定义在后面的章节再详细讲解
argin=varargin;
while length(argin)>=2,
   prop=argin{1};
   val=argin{2};
   argin=argin(3:end);
   switch prop
       case 'x'
           d.x=val;
       case 'y'
           d.y=val;
       otherwise
           error('Asset properties:x,y');
   end
end  
%prod.m
function z=prod(d)
z=d.x*d.y;  
(3) 在MATLAB命令行中进行如下操作:
cd E:\MyProgram\matlab7\chap4  
d = list(11,22)  
list class:
x=11
y=22  
prod(d)  
ans =
  242  
d = set(d,'x',7);
get(d,'x')  
ans =
    7  
prod(d)  
ans =
  154  
下面对操作步骤中的细节加以详细解释。
1. 类的创建
创建一个新的类,首先需要在构造函数中用结果类型struct建立一个结构变量,包含所需要的成员变量。注意,这里不用考虑成员函数。然后用class命令将七转换成类,并返回。class命令的语法很简单:
 类变量 = class(结构变量,'类名');
这里类名和构造函数名相同。程序中要创建这个类的新的变量时,只需调用其构造函数,返回的变量就属于这个类的了。当然,这里的list.m太过简单,没有任何变量检查,使用中还可以根据情况添加一些扩充功能。
2. 类成员变量的赋值
本例中,类的成员变量是在构造函数中赋值的。MATLAB中,类成员变量都是private的,必须在成员函数中访问,因此就不能箱struct那样,用d.x和d.y等形式访问其成员变量了。不过,这个问题不严重,编个专门的成员函数get就行了。另外,成员函数的调用有个跟普通的函数一样。注意在get和set函数中,成员变量是以字符串的形式指定的,要通过字符串比较的办法进行区分,然后对输出变量进行赋值。本例中的set函数支持同时对两个成员变量赋值,因此用到了不定长输入产生表varargin,例如:
d = set(d,'x',12) % 只对其中一个成员变量赋值   
list class:
x=12
y=22  
d = set(d,'x',23,'y',34)  % 同时对两个成员变量赋值  
list class:
x=23
y=34

3. 成员变量的显示
成员被变量display不是必须的,不过她可以显示类的有用信息。如果在命令行上输入一个类变量,不加分号就回车,这时其display函数就自动调用。在该函数中,可以显示任何与该类信息相关的信息,当然也可以是不相关的。
4. 工作目录
一个工作目录吓可以仿真多个类目录。通常可以把大程序按功能分开,用类重新组织起来,使程序更具有结构化,增强其可读性。
4.4.2  在类中引用方法
1. 实现方法函数
类的方法(class methods)是指M文件编写的以类的对象作为输入产生的函数。一个特定的类的方法通常要保存在这个类的目录中。如上一小节中 @list 的方法函数存储在 @list路径下。
对方法汗的调用方式和对普通函数的调用方式是相同的,其命令格式为:
[输出1,输出2,…] = 方法名称(对象名,参数1,参数2,…);
但是必须注意,方法函数中如果对类的成员变量进行了改变,就必须将改变后的类变量作为输出变量返回,否则在原工作空间中的类变量的成员变量不能得到更新。例如:
d = list(10,20);
set(d,'x',23,'y',34);  
d  
list class:
x=10
y=20  
可以看到,调用set函数而不将返回结果重新赋值给d,着d的x和y两个成员变量仍然保持原来的数值。
2. 私有方法
私有方法是指只能被同类的其他方法所调用的方法,其对应的M文件存在类目录的private子目录下。例如,如果list类有私有方法,就应该将它们保存在@list/private目录下。私有方法的作用域子限于list这个类中,而不能够被MATLAB命令行调用,或者被上一层类的方法调用。
3. 辅助函数
在设计类的时候,有些工作需要由;一些特定的函数来完成,但这些函数并不一定直接对类的对象操作,这些函数通常被称为辅助函数(helper funtions)。辅助函数可以是类方法文件中的一个子函数,也可以是一个独立的私有函数。
4. 类方法的调用
在MATLAB中,可以采用与调试程序相同的命令对类方法进行调试,唯一不同的是对类方法的调试必须下命令行中添加类的路径。例如使用dbstop命令(停止调试)对display进行调试的时候,需要用如下的命令:
dbstop  @list/display
当然,也可以在M文件编辑/调试器中直接设置断点进行调试。
4.4.3   类的继承和集成
MATLAB中的类对象可以集成其他类对象的属性,当一个子类从父类中继承了属性后,在子类中将包括父类的所有成员和方法,父类的方法也可以使用之类继承的法拉国防。继承的概念是面向对象编程中的一个重要特性,子类可以很方便的引用父类中已经定义的方法。类的继承由两种方式:简单继承和多重继承。类集成的概率有点类似于嵌套,是指类对象的域中包括另外一个对象的情形。
1. 简单继承
简单继承是指子类从一个父类继承属性,子类中也包括它自己的一些新的属性。对于父类的操作可以应用到子类上来,而对于子类中不属于父类的方法则不可以应用到父类上去。
通常可以使用class函数来实现类的继承。
子类对象名 = class(子类对象名,'子类类名',父类对象名);
2. 多重继承
多重继承是指子类从多于一个父类中继承属性。子类中包含所有从父类中继承来的属性,还包括它自己的属性。
3. 类的集成
类的集成是指一个类可以把另外的类作为自己的一个成员变量。被嵌入的类对象的方法函数值能通过外层对象的方法函数调用。

下载: GUIDE/Matlab 2006a帮助文档(pdf)

span>
Note
This revision of Creating Graphical User Interfaces,
issued May2006, adds three new chapters that provide more
information for creating GUIs programmatically. The new
HTML and PDF versions of this document replace the
March2003 version on TheMathWorks Web site.
July 2009
S M T W T F S
June 2009August 2009
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31