您好,欢迎来到九壹网。
搜索
您的当前位置:首页Matlab常见问题汇总和编程实例精资料

Matlab常见问题汇总和编程实例精资料

来源:九壹网
 Matlab常见问题汇总(精) 1

1.良好的编程习惯,程序文件开头一般添加复位的命令

clear%清除内存变量 clc%清除屏幕

close all%关闭所有图像窗口

2.读取文件的数据

actinfo0=importdata('Lincese1\\actinfo.dat');% 读取Lincese1文件夹下actinfo.dat文件的数据

3. 获得当前电脑主机名

[a,hostname0]=dos('hostname');

4.判断两个字符串是否相同,字符匹配

strcmp('3455','3455') %判断两个字符串是否完全匹配

strncmp('3455','3455',3)%判断两个字符串的前n个字符是否匹配

5. 读取图片三维数据,显示图片

p1=imread(pathicon);%获得和读取图片三维数据 image(p1)%显示图片

6.字符类型转换小结

dircell=struct2cell();%结构型转变为胞元类型 idchushi=char();%转变为字符格式

indexstr=num2str(index);%数值型转变为字符串

bindex=str2num(cell2mat(zbindex)); %字符串转变为数值型

suoyoudata3=cell2mat(dqjcidsuoyoudata(:,9:end)); %胞元转变为dobule数值型 str2double(zbbzlow{i})%字符串转变为数值型

7.获得文件夹下的文件名

dir('picture1\\*')% 获得picture1文件夹下的所有文件名

dir('picture1\\*.jpg') % 获得picture1文件夹下的JPG格式的所有文件名

Matlab常见问题汇总(精) 2

8.设置图形窗口名称、是否显示工具栏菜单栏,是否可以缩放

set(f,'toolbar','none','menubar','none','color',[0.7 1 0.6],'resize','off','name','Activation');

9.弹出窗口,警告信息

msgbox('软件已经在其他电脑上安装并激活,无法在本电脑上使用','错误信息','error'); 相似的命令还有:dialog, errordlg, helpdlg, inputdlg, listdlg, questdlg, warndlg

10.修改GUI界面或者图形窗口左上角的matlab系统默认图标

javaFrame=get(f,'JavaFrame');

javaFrame.setFigureIcon(javax.swing.ImageIcon(pathicon));

11.设置GUI界面或者图形窗口的菜单项和子菜单项目

%设置菜单项

menufile=uimenu('label','文件'); meunhelp=uimenu('label','帮助'); %设置菜单子项

menustart_item1=uimenu(menufile,'label', '新建','callback',['clear,clc,close,', function]); menustart_item2=uimenu(menufile,'label', '打开','callback',['clear,clc,close,',function]);

12. 设置GUI界面或者图形窗口的背景图片

icon=axes('position',[0 0 1 1],'units','normalized'); uistack(icon,'down');

picture=imread(pathbackground); image(picture); colormap gray

set(icon,'handlevisibility','off','visible','off');

13. 设置GUI界面或者图形窗口的各类控件

b_exit=uicontrol(gcf,'style','pushbutton','string','退出','units','normalized','position',[0.75 0.2 0.18 0.08],'fontsize',12,'backgroundcolor','w','callback','clear,clc,close');

Matlab常见问题汇总(精) 3

14.读取txt格式文件数据

textread(idstartpath)

textread(idstartpath,'%s')%以字符型格式读取

15.字母a-z,A-Z的简便表示方法

char([65:90,97:122]) % a-z,A-Z

16.删除文件夹下的某个文件

path1=['Lincese1\\edocs','.dat'];%文件路径 delete(path1);% 删除文件

17.文件的打开,写入,关闭

file=fopen(path1,'w'); fprintf(file,'%c',ss); fclose(file);

18.设置和获得GUI控件的属性

set(jielunkj,'string',’OK’);%设置控件句柄为jielunkj的名称为OK get(zhishideng,'backgroundcolor') %获得控件的背景颜色 get(brun2,'string'); %获得控件的名称字符

set(zhishideng,'backgroundcolor',[1 1 0]); %设置控件的背景颜色

19.时间类型,获得当前时间

now%获得当前时间

cidcjsjdata=datestr(now,31);%当前时间的char字符型

shijiandian=datenum(shijiandian);%转变成时间格式,以小时为单位 类似的命令还有:clock, date

20.判断是否的命令

isempty(index) %判断该变量是否为空

exist('yichangxxjl','var') %判断该变量yichangxxjl是否存在 ishandle(hwarn) %判断该变量hwarn是否是句柄

Matlab常见问题汇总(精) 4

类似的命令还有:ismember, issorted

21.延时,或者暂停2秒钟

pause(2); pause

22.保存变量到文件中

%保存变量idchushi到以idstartpath为路径的文件中 dlmwrite(idstartpath,idchushi,'%s')

23.简单的GUI界面

fyc=figure;

set(fyc,'toolbar','none','menubar','none','position',[370 130 620 540]); set(fyc,'numbertitle','off','name',item3yc);

24.对变量进行排序,获得将序排列的向量和原始位置索引

[ppdu,ppindex]=sort(rateij,'descend');

25.两个向量取交集

intersect(childhindex1,childhindex2);

26.计时器,获取程序运行时间

tic%计算程序运行的时间,两个命令成对使用 toc

27.图像分区域显示

axe1=axes('units','normalized','position',[0 0 1 1],'parent',panel2); subplot(231) subplot(232) subplot(233) subplot(234) subplot(235) subplot(236)

Matlab常见问题汇总(精) 5

28.matlab运用JDBC方式连接SQL数据库,并读取数据

%在Matlab用JDBC驱动连接SQL Server 2008(其他仅连接符url和driver不同) %在运行此段代码前先确保配置好了JDBC驱动,方法如下:

%1.Microsoft官网下载sqljdbc3.0驱动——Microsoft SQL Server JDBC Driver 2.0.exe(4M左右) %2.解压后能看到sqljdbc4.jar和sqljdbc.jar文件,针对电脑上JDK的版本选择导入文件,如JDK6.0导入sqljdbc4.jar

%3.在command windows中输入:edit classpath.txt 打开路径配置文件 在文件最后一行添加sqljdbc4.jar的完整路径,

%(不能同时加载sqljdbc4.jar和sqljdbc.jar的路径,否则不能正常连接数据库)。 %4.在SQL Server中新建一个登录名sa,并设置密码为1214 %5.采用如下代码在Matlab中连接SQL Server 2008 clear;clc;close;

databasename='test'; %数据源名称 username='sa'; %登录名 password='1214'; %密码

driver='com.microsoft.sqlserver.jdbc.SQLServerDriver';

databaseurl=['jdbc:sqlserver://localhost:1433;database=',databasename]; conn = database(databasename,username,password,driver,databaseurl) ping(conn) tic

%搜索条件

sqlquery='select * from tabeltest'

% sqlquery='select * from stock where id= ''1''' curs=exec(conn,sqlquery) curs=fetch(curs) %输出前几条记录 % curs = fetch(curs, 3)

% % 外部输入关键字搜索

% Userid = input('Enter your id: ', 's')

% curs = exec(conn, ['select * from stock where id= ''', Userid, '''']) %设置检索结果的格式

setdbprefs('DataReturnFormat','cellarray')%numeric、cellarray %行数、列数、字段名 numrows=rows(curs) numcols=cols(curs)

colnames=columnnames(curs)%字段名 colsize = width(curs,2)%第二列字段宽度 attributes = attr(curs,1)%第一列字段的属性 data=curs.data % %修改记录

% colnames = {'name', 'price'}; % newdata={'lrz','158'};

Matlab常见问题汇总(精) 6

% whereclause = 'where id = ''12''';

% update(conn, 'stock', colnames, newdata, whereclause) % %插入记录

% c={'limingming' , '2014-3-24 00:00:00' , '12' , '12' , '12.14'} % insert(conn,'stock',{'name','time','price','int1','float1'},c) % exec(conn,'rollback') % exec(conn,'commit') toc

%关闭连接 close(curs) close(conn)

%远程服务器连接程序示例:

databasename='zxdata'; %数据源名称 username='sa'; %登录名 password='1234'; %密码

driver='com.microsoft.sqlserver.jdbc.SQLServerDriver';%驱动程序

databaseurl=['jdbc:sqlserver://239.145.165.228:1433;database=',databasename];%239.145.165.228为所要读取远程服务器的公网IP地址

conn = database(databasename,username,password,driver,databaseurl);%建立连接 sqlquery=['SELECT TOP 1 [id] FROM [zxmain] order by id desc'];%SQL操作语句 curs=exec(conn,sqlquery);%执行操作 curs=fetch(curs);

colnamesy=columnnames(curs);%字段名 datay=curs.data;%获得数据 close(curs); %关闭连接 close(conn);

%注:matlab用JDBC读取数据库需要配置相关工具箱

其中

29.符号函数

Ft=@(t)0*t;%初始化 ft=@(t)0*t;

Ft=@(t)1-exp(-(t/theta).^beta);%括号内为自变量

ft=@(t)(beta/theta)*((t/theta).^(beta-1)).*(exp(-(t/theta).^beta));

%符号函数的求解过程

F=@(beta)1/beta+sum(sigma111.*log(fault111))/r-sum((fault111.^(beta)).*log(fault111))/(sum((fault111.^(beta)))); beta=fsolve(F,1);

30.matlab 图像作图改坐标

1. 问:横坐标是[0;80],纵坐标[0;100],我想改成[0;0.8]和[0;1.0],但是图形大小不会随坐标的比

Matlab常见问题汇总(精) 7

例缩小而改变。该用什么命令? 最佳答案:

x=0:80; y=1.25*x; plot(x,y)

set(gca,'XTickLabel',str2num(get(gca,'XTickLabel'))/100); set(gca,'YTickLabel',str2num(get(gca,'YTickLabel'))/100); 2.修改matlab输出图形的横坐标?

问:如何通过程序仅修改matlab输出图形的横坐标? 比如我在编完一段程序之后,输出图形,其横坐标为 1 2 3 4 5 6 7 8 9 10

现在,我想通过程序使横坐标相应的放大一定倍数,而原来的曲线形状保持不变,也就是想要得到的横坐标为

2 4 6 8 10 12 14 16 18 20

答:

x=[1 2 3 4 5 6 7 8 9 10]; plot(x)

xt=[2 4 6 8 10 12 14 16 18 20]; set(gca,'xtick',xt) set(gca,'xticklabel',xt) axis([2 10 1 10])

3.matlab绘图如何让坐标轴上的数字变为字符?

比如y轴是1的位置变为first,不是用text命令要全部覆盖,知道怎样实现? 最佳答案 举个例子 %先画个图

x=0:.1:5; y=exp(x); plot(x,y); %下面定义x轴的刻度 set(gca,'XTick',1:5) %下面是x轴的刻度值

set(gca,'XTickLabel',{'one','two','three','four','five'})

4.matlab中坐标轴移动

问:刻度要标示在y=0这条直线上? 最佳答案: x=-5:0.01:5;

y=sin(pi*x/2^(1/2)); plot(x,y),hold on box off

plot([-5,5],[0,0],'k'); x = get(gca,'XTick');

Lx = get(gca,'XTickLabel'); y = zeros(size(x))-0.1; text(x,y,Lx);

5.matlab 中我的x轴坐标是自动显示为1,2,3,...,10,我想改成10,7,5,4,1怎么改? 问题补充:我的题目是 x从10 到0.1变化的,计算完后,从10到0.1画图,并且x坐标标定为10,2,0.4,0.1四点即可!请教高手帮忙!就这么点积分了!谢谢!! http://zhidao.baidu.com/question/81879787.html?si=10 最佳答案

Matlab常见问题汇总(精) 8

x=0.1:0.1:10; plot(x,x.^2)

set(gca,'XTick',[0.1,10.1-2,10.1-0.4,10]) set(gca,'XTicklabel',[10,2,0.4,0.1])

%注:get(gca)可以知道axes里面的所有属性想怎么改就怎么改

31.Figure图像图形的位置

scrsz = get(0,'ScreenSize');

figure('Position',[1 scrsz(4)/2 scrsz(3)/2 scrsz(4)/2])

32.递归运算示例

建立control555.m的M文件 function y=control555(x) if x==1 y=1; else

y=x*control555(x-1); end

然后在命令窗口中输入 >> control555(5) ans = 120

33.图像箭头指示文字,作图上添加文字并用箭头指示

plot([0:2*pi],sin([0:2*pi])),text(pi,0,' \\leftarrow sin(\\pi)','FontSize',18)

Matlab常见问题汇总(精) 9

34.GUI上添加表格和使用方法

matlab 中uitable的简单使用

1、往表格里写数据,将数据初始化成cell格式。用最笨的循环方式,dat(i,j)={'0'}; 用set命令初始化表格,使其可编辑

set(handles.uitable,'ColumnName', columnname,... 'data',dat,...

'ColumnEditable', [true]);

2、取出表格里的数据inputdata=get(handles.uitable,'data')。

将cell型数据转换成符号矩阵,定义一个子函数的方式。其中bolicdefine是一个m文件,在里面把要用到的用于计算的符号变量定义好。用syms function [outsyms]=transfer(instr) bolicdefine si=size(instr,1); sj=size(instr,2); for j=1:sj; for i=1:si;

outsyms(i,j)=eval(instr{i,j}); %注意括号是{} end end 3、将符号矩阵转换成数字矩阵。也是用定义一个子函数的方式。其中 paras是一个m文件,在里面把要用到的用于计算的符号变量的值全部定义好 function [outnum]=transsyms2num(insyms) paras

si=size(insyms,1); sj=size(insyms,2); for j=1:sj; for i=1:si;

outnum(i,j)=eval(insyms(i,j)); %注意括号是() end end

这样可以实现,但是矩阵维数较大的时候,运算比较慢 4.matlab GUI中处理选中的表格数据用法: 1、uitable(numrows,numcolumns) 建立指定行数和列数的表格 2、uitable(data,columnNames) 建立指定行名称和数据的的表格

3、uitable(‘PropertyName1’,’Value1,¨¨)

建立指定的属性名称和属性值的表格,属性名称和属性值: Column names

字符串细胞数组来定义窗体的名称 Data

以细胞数组值来定义显示在窗体内的数据内容

Matlab常见问题汇总(精) 10

GridColor

以颜色值或RGB向量来定义uitable内网格的颜色 NumColumns

以整数来定义窗体的行数 NumRows

以整数来定义窗体的列数 Parent

父窗口的句柄值,如果未定义,自动设为gcf Psition

以四元素的向量定义uitable的位置 ColumnWidth

以整数来定义窗体的行宽 RowHeight

以整数来定义窗体的列高 Editable

以布尔数指定行是否可编辑(默认为1:可编辑) Units

指定单位,有pixels,normalized,inches,points和centimeters5种 Visible

以布尔数指定窗体是否可见(默认为1:可见) DataChangedCallback

Callback函数的名称或者该函数的句柄值

35.Matlab之对话框汇总 1. 消息对话框

msgbox函数。它不接受用户的任何输入,在用户单击OK按钮后,对话框自动关闭,然后返回程序中继续执行。

>> msgbox('欢迎使用MATLAB') % 建立一个没有标题的消息对话框

>> msgbox('欢迎使用MATLAB','MATALB','warn') %% 建立一个有标题的消息对话框

2. 错误对话框

errordlg函数。 >> errordlg %建立一个默认参数的错误对话框

>> errordlg('这是一个错误对话框','MATLAB error') %建立一个名为MATLAB error的错误对话框

Matlab常见问题汇总(精) 11

3. 警告对话框

warndlg函数。 >> warndlg %建立一个默认参数的警告对话框 >> errordlg('这是一个警告对话框','MATLAB warning')

4. 帮助对话框

helpdlg函数。

>> helpdlg('你需要帮助吗?','MATLAB Help')

5. 进度条设置对话框

waitbar函数。作用是反映程序运行的完成情况。 h=waitbar(0,'请稍等......') for i=1:10000 waitbar(i/10000) end

6.输入对话框

inputdlg函数。

Matlab常见问题汇总(精) 12

prompt={'输入自变量x:','输入自变量y','输入自变量z'};%设置提示字符串 name='Enter trapeaia Data';%设置标题 numlines=1;%指定输入数据的行数 defAns={'20','50','40'};%设定默认值 Resize='on';%设定对话框尺寸可调节

answer=inputdlg(prompt,name,numlines,defAns,'on')%创建输入对话框

7. 列表对话框

listdlg函数。

p=path(path,'C:\\MATLAB7 \\work');%设置路径,若为当前目录,可以省略这一步 d=dir('C:\\MATLAB7\\work');%获取指针,若为当前目录,则d=dir str={d.name};%获取目录内的文件名

[sel,ok]=listdlg('Liststring',str,'PromptString','请选择文件 ','SelectionMode','Multiple')%创建列表对话框。文件选择成功后,单击“OK‘按钮,系统将选择好的文件序号存入相应向量sel,参数ok的值为1。

8.问题对话框

questdlg函数。提出一个问题,等待用户回答。默认下回答按钮有三个:Yes、No、Cancel。当用户单击任何一个按钮时,系统将该按钮名保存在一个变量(ButtonName)中。如果用户关闭对话框,则系统将ButtonName置为空。

>> ButtonName=questdlg('你准备好了吗?','MATLAB quest','Yes','No','Cancel','Yes')

9.路径选择对话框

uigedir函数。用于用户查找和选择路径。

>> directoryname=uigetdir('C:\\MATLAB7\\work','浏览文件件')

Matlab常见问题汇总(精) 13

10.选择文件对话框

uigetfile函数。用于用户选择所需的文件。

① >> [fn,pn,fi]=uigetfile('*.m','select a M-file')%打开一个选择M文件的对话框,并选择一个文件

② [fn,pn,fi]=uigetfile(...

{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)'; '*.m','M-file(*.m)';... '*.fig','Figure(*.fig)';... '*.mat','MAT-flie(*.mat)';... '*.mdl','Models(*.mdl)';... '*.*','All Flies(*.*)'},... 'Pick a file')

%打开一个选择多种文件的对话框,并选择一个文件

11.文件保存对话框

uiputfile函数。用于保存文件。

① >> [fn,pn,fi]=uiputfile('*.m','Save selected a M-file') ② [fn,pn,fi]=uiputfile(...

{'*.m;*.fig;*.mat;','All MATLAB File(*.m,*.fig,*.mat,*.mdl)'; '*.m','M-file(*.m)';... '*.fig','Figure(*.fig)';... '*.mat','MAT-flie(*.mat)';... '*.mdl','Models(*.mdl)';... '*.*','All Flies(*.*)'},... 'Save a file')

%建立多种保存文件的对话框,并选择一个文件

12.页面设置对话框

pagesetupdlg 函数。用来设置页面的各种属性、参数。调用格式为: dlg=pagesetupdlg(fig)

该命令创建一个页面设置对话框,在该对话框用户可以设置页面的各种属性和参数。该命令只支持单一图形窗口的页面设置,参数fig也必须是单一的图形句柄,不可以是图形句柄向量或 simulink图。 >> fig=figure;

>> dlg=pagesetupdlg(fig)

Matlab常见问题汇总(精) 14

13.打印设置对话框

printdlg 函数。用户可以对各种打印参数进行设置。 x=[-pi:0.02:pi]; y=cos(x); fig=figure; plot(x,y);

printdlg(fig);%打开Windows打印对话框

printdlg('-crossplatform',fig);%打开MATLAB打印对话框

14.颜色设置对话框

uisetcolor 函数。用于用户设置图形的前景色或背景色。 ① >> c=uisetcolor %建立一个颜色选择对话框

② %建立一个颜色对话框,并设置对话框的初始颜色,然后选择一种颜色用于一个图形对象。

x=[0:0.02:2*pi]; y=sin(x); h=figure; plot(x,y);

c=uisetcolor(h,'select color')

15. 字体设置对话框

uisetfont函数。用于用户设置或修改文本字体、坐标轴或设置控件对象的显示文本的字体属性。

① >> s=uisetfont % 建立一个默认字体设置对话框,并设置一种字体。

Matlab常见问题汇总(精) 15

② 对控件中的文本进行设置

T1=uicontrol('style','pushbutton','string','确定',... 'position',[200 320 60 20]); %创建一个按钮 T2=uicontrol('style','pushbutton','string','取消',... 'position',[200 220 60 20]); %创建一个按钮 s=uisetfont(T1) %打开字体设置对话框 set(T2,s) %将T1的设置复制到T2

36.安装工具箱方法

当然如果你对Matlab的命令比较熟悉的话,你可以直接使用命令进行工具箱安装操作,方法如下

(1)将工具箱解压到任意路径,但是推荐MatlabRoot下的Toolbox中 (2)在Matlab中输入

1. >>addpath('Your_ToolBox_Full_Path')%注意必须是文件夹路径 2. >>savepath

(3)更新搜索目录,可使用上面的界面操作,当然也可以命令行 1. rehash toolboxcache

37.发声

sp=actxserver('SAPI.SpVoice'); sp.Speak('hello, world')

sp.Speak('人之初,性本善,性相近,习相远')

38.归一化三种方法

在matlab里面,用于归一化的方法共有三种 :

(1)用matlab语言自己编程,通常使用的函数有以下几种: 1.线性函数转换,表达式如下:

y=(x-MinValue)/(MaxValue-MinValue) (归一到0 1 之间) y=0.1+(x-min)/(max-min)*(0.9-0.1)(归一到0.1-0.9之间)

说明:x、y分别为转换前、后的值,MaxValue、MinValue分别为样本的最大值和最小值。 (2)premnmx、tramnmx、postmnmx、mapminmax

premnmx函数用于将神经网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。

premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T),其中P,T分别为原始输入和输出数据。

在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数据也应该和样本数据接受相同的预处理,这就要用到tramnmx函数: tramnmx语句的语法格式是:[PN]=tramnmx(P,minp,maxp)

其中P和PN分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最

Matlab常见问题汇总(精) 16

大值和最小值。

网络输出结果需要进行反归一化还原成原始的数据,常用的函数是:postmnmx。 postmnmx语句的语法格式是:[PN] = postmnmx(P,minp,maxp)

其中P和PN分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的最大值和最小值。

还有一个函数是mapminmax,该函数可以把矩阵的每一行归一到[-1 1]. mapminmax语句的语法格式是:[y1,PS] = mapminmax(x1) 其中x1 是需要归一的矩阵 y1是结果。

当需要对另外一组数据做归一时,就可以用下面的方法做相同的归一了 y2 = mapminmax('apply',x2,PS)

当需要把归一的数据还原时,可以用以下命令: x1_again = mapminmax('reverse',y1,PS)

(3)prestd、poststd、trastd

prestd归一到单位方差和零均值。

pminp和maxp分别为P中的最小值和最大值。mint和maxt分别为T的最小值和最大值。

39拟合与回归函数命令小结

多元线性回归regress 一对一的拟合ployfit 多元多项式回归rstool 自定义模型回归nlinfit 剔除奇异点的拟合robust 拟合工具界面cftool

40消除运行MATLAB生成的exe程序的dos黑屏的办法

基于MATLAB生成exe文件后,每次运行都存在dos黑屏的问题,现在可以通过以下方法解决:

方法一:直接用mcc –e filename 方法二: 在命令窗口输入: cd(prefdir)

edit compopts.bat

在打开的文件最后添加以下语句:

A.VC环境下:set LINKFLAGS=%LINKFLAGS%/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup B.LCC环境下:set LINKFLAGS=%LINKFLAGS% -subsystemwindows C. Borland:set LINKFLAGS=%LINKFLAGS% -aa

保存以后,再重新编译m文件,生成的exe文件运行起来就没有dos窗口了

Matlab常见问题汇总(精) 17

41在使用LaTex字符,标注ω、β等字符的方法

1.Tex字符表

在text对象的函数中(函数title、xlabel、ylabel、zlabel或text),说明文字除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(0.3,0.5,'sin({\\omega}t+{\\beta})','Fontsize',30)将在图形窗口的(0.3,0.5)位置得到标注效果sin(ωt+β)。

Tex字符在输出一些数学公式时经常使用,它只能由类型为text的对象创建。函数title、xlabel、ylabel、zlabel或text都能创建一个text对象,因此Tex字符转义符(带“\\”的字符串)经常作为这些函数的输入参数。Tex字符及其函数见下表。 函数字符 \\alpha \\beta \\gamma \\delta \\epsilon \\zeta \\eta \heta \\vartheta \\iota \\kappa \\lambda \\mu \\nu \\xi \\pi \\rho 代表符号                  函数字符 \on \\phi \\chi \\psi \\omega \\Gamma \\Delta \\Theta \\Lambda \\Xi \\Pi \\Sigma \\Upsilon \\Phi \\Psi \\Omega \\formall 代表符号                  函数字符 \\sim \\leq \\infty \\clubsuit \\diamondsuit \\heartsuit \\spadesuit 代表符号        \\leftrightarrow  \\leftarrow  \ow \\rightarrow \\downarrow \\circ \\pm \\geq \\propto \\partial        Matlab常见问题汇总(精) 18

\\sigma \\varsigma \au \\equiv \\Im \\otimes \\cap \\supset \\int \\rfloor \\lfloor \\perp \\wedge \\rceil \\vee \\langle               \\exists \\ni \\cong \\approx \\Re \\oplus \\cup \\subseteq \\in \\lceil \\cdot \\neg \imes \\surd \\varpi                \\bullet \\div \\neq \\aleph \\wp \\oslash \\supseteq \\subset \\o \\nabla \\ldots \\prime \\0 \\mid \\copyright                \\rangle   如果要输出希腊字母,可以使用texlabel函数将希腊字母的变量名转化为希腊字母的函数,供函数title、xlabel、ylabel、zlabel或text使用。texlabel转换MATLAB表达式为等价的Tex格式字符串。它处理希腊字母的变量名为实际显示的希腊字母字符串。希腊字母的变量名为“\\”后面的字符串。例如: >> texlabel('alpha') ans = {\\alpha}

>> text(0.5,0.5,'{\\alpha^2}')

>> text(0.5,0.5,texlabel('alpha^2')) 2. Tex字符格式

Tex字符还可以设置字体、颜色和位置。 (1)Tex字符的字体设置有如下6种。 ①\\bf:设置字体为粗体字。 ②\\it:设置字体为斜体字。

③\\sl:设置字体为斜体字,很少使用。 ④\\rm:设置字体为正常字体。

⑤\\fontname{字体名}:设置字体名。例如:\\fontname{宋体}。 ⑥\\fontsize{字体大小}:设置字体大小。例如:\\fontsize{16}。 每次设置时,\\it、\\sl、\\rm只能选择一种。 (2)Tex字符的颜色设置有下面两种方法。 ①\\color{颜色名}颜色名:颜色名有12种,分别为red、green、yellow、magenta、blue、black、white、cyan、gray、barkGreen、orange和lightBlue。例如:\\color{magenta}magenta。

②\\color[rgb]{a b c}:设置字体颜色为RGB矩阵[a b c]所表示的颜色。 a、b和c都在[0 1] 范围内。例如:color[rgb]{0 .5 .5}。 (3)Tex字符的位置有2种设置。 ①_:表示下标。 ②^:表示上标。

Matlab常见问题汇总(精) 19

42.MATLAB二进制文件与文本文件

文本文件将文件看作由一个一个字节组成,每个字节最高位都是0。文本文件只使用了一个字节中的低7位来储存所有的信息,而二进制文件将字节中的所有位都用上了。

文件按照文本方式或二进制方式打开,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理方式也就不同。按照文本方式打开,打开时要进行转换,将每个字都转换成ASCII码;而按照二进制方式打开时,不会进行任何转换。

文本文件和二进制文件的编辑方式也不同。例如,在用记事本进行文本编辑时,进行编辑的最小单位是字节;而对二进制文件进行编辑时,最小单位是位,可使用UltraEdit软件编辑二进制文件。

从文件编码方式来看,文件可分为ASCII码文件和二进制码文件。ASCII码文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应字符的ASCII码。例如,数5678共占用4字节,“5”、“6”、“7”和“8”的ASCII码依次为53、54、55、56,存储形式为

ASCII:00110101 00110110 00110111 00111000 十进制码:5 6 7 8

二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为 0001011000101110,只占两字节。 验证如下:

>> dec2bin(5678) ans =

0001011000101110 >> abs('5678') ans =

53 54 55 56 >> dec2bin(53) ans = 00110101

>> double('5678') ans =

53 54 55 56 >> bin2dec('00110101') ans = 53 >> char(ans) ans = 5

43.MATLAB函数句柄

函数句柄是一种特殊的数据类型,它提供了间接调用函数的方法,类似于C语言中的指针,只不过这里是指向一个函数而已。

函数句柄包含了函数的路径、函数名、类型以及可能存在的重载方法,必须通过专门的定义

Matlab常见问题汇总(精) 20

创建,而一般的图像句柄是自动建立的。 可以使用函数句柄来调用其他函数,也可以将函数句柄存储在数据结构中,方便以后使用(如句柄图形中的回调函数)。

创建函数句柄使用@或者srt2func命令。采用@创建函数句柄,是在函数名前加一个“@”标志,并且不能附加函数的路径,即函数句柄=@函数名。

MATLAB映射句柄到指定的函数,并在句柄中保存映射信息。由于没有附加函数路径信息,如果同一个名字的函数有多个,函数句柄映射到哪个函数呢?

这取决于函数调用的优先原则。函数调用的优先级从高到低排列如下:

①变量。调用优先级最高。MATLAB搜索工作空间是否存在同名变量,如有则停止搜索。 ②子函数。 ③私有函数。 ④类构造函数。 ⑤重载方法。

⑥当前目录中的同名函数。

⑦路径中其他目录中的函数。调用优先级最低。

如果查询同名函数中究竟哪个函数被调用了,用which函数查询。例如: >> which function

D:\\Program Files\\MATLAB\\R2010b\oolbox \\ function.m 当一个函数句柄被创建时,它将记录函数的详细信息。因此,当使用函数句柄调用该函数时,MATLAB会立即执行,不进行文件搜索。当反复调用一个文件时,可以节省大量的搜索时间,从而提高函数的执行效率。 使用函数句柄有如下好处:

①提高运行速度。因为MATLAB在调用函数时每次都要搜索所有路径,而路径又非常多,所以一个函数在程序中需要经常用到的话,使用函数句柄会提高运行速度。

②使用方便。比如说,用户在某目录运行函数句柄后,创建了本目录的一个函数句柄,当用户转到其他目录下时,创建的函数句柄可以直接调用,而不需要把相应的函数文件拷贝过来。因为在用户所创建的函数中,已经包含了路径。

44.GUI控件使用大全,范例

clear,clc,close f=figure;

set(f,'toolbar','none','menubar','none','resize','off','position',[140 52 1060 656]); set(f,'numbertitle','off','name','GUI');

%设置菜单项

menustart=uimenu('label','开始'); menufile=uimenu('label','文件');

% menumodel=uimenu('label','模型');

% menumethod=uimenu('label','估计方法'); menuhelp=uimenu('label','帮助'); %设置菜单子项

menustart_weibull=uimenu(menustart,'label','weibull','callback','clear,clc,close,Micro_weibull,flagflag=0;modulestrindex=1;weibullfunction');

menustart_item2=uimenu(menustart,'label','item2','callback','clear,clc,close,soft_zhenduan,flagfl

Matlab常见问题汇总(精) 21

ag=0;modulestrindex=2;zhenduanfunction');

menufileopen=uimenu(menufile,'label','打开'); menufilesave=uimenu(menufile,'label','保存');

menufileexit=uimenu(menufile,'label','退出','callback','clear,clc,close'); % menumodel2w=uimenu(menumodel,'label','两参数','tag','2w','callback','flagflag=0;modelstrindex=1;weibullfunction'); % menumodel3w=uimenu(menumodel,'label','三参数','callback','flagflag=0;modelstrindex=2;weibullfunction'); % menumodelnorm=uimenu(menumodel,'label','','callback','flagflag=0;modelstrindex=3;weibullfunction'); % menumodellognorm=uimenu(menumodel,'label','','callback','flagflag=0;modelstrindex=4;');

对正数

态正

威威

布布

尔尔布

分布

% menumodelp=uimenu(menumodel,'label','幂律过程','callback','flagflag=0;modelstrindex=5;'); %

% menumethodsiran=uimenu(menumethod,'label','','callback','flagflag=0;methodstrindex=1;');

% menumethodercheng=uimenu(menumethod,'label','最小二乘','callback','flagflag=0;methodstrindex=2;');

% menumethodsiranxiu=uimenu(menumethod,'label','极大似然(修正)','callback','flagflag=0;methodstrindex=3;');

menuhelpshiyongshuoming=uimenu(menuhelp,'label','使用说明'); menuhelpjibenxinxi=uimenu(menuhelp,'label','关于软件'); %信息提示

panelxinxi=uipanel('position',[0 0.96 1 0.04],'backgroundcolor',[0.9 0.9 0.4]);

%textxinxihead=uicontrol(panelxinxi,'style','text','string',' 信息','units','normalized','position',[0 0

1],'fontsize',10,'HorizontalAlignment','left','backgroundcolor',[1,1,0.7]); %textxinxi=uicontrol(panelxinxi,'style','text','string',strcat(' module/',modulestr(modulestrindex),':'),'units','normalized','position',[0 0 1],'fontsize',10,'HorizontalAlignment','left','backgroundcolor',[1,1,0.7]);

栏 0.1

1

%诊断结论区

panel3=uipanel('position',[0.60 0.25 0.40 0.71],'backgroundcolor',[0.7 0.8 0.6]); %jielunkj=uicontrol(panel3,'style','listbox','Units','normalized','Position',[0.02 0.02 0.96 0.96],'string',result(2),'fontsize',12,'backgroundcolor',[1 1 1],'value',1); %操作区

panelcaozuo=uipanel('position',[0.5 0.0 0.5 0.25],'backgroundcolor',[0.8 0.6 0.4]); %操作区按钮

brun1=uicontrol(panelcaozuo,'style','pushbutton','string','RUN','units','normalized','position',[0.5 0.2 0.08 0.3],'fontsize',10,'HorizontalAlignment','left','backgroundcolor',[1 0 1],'callback','flagflag=1');

bplot1=uicontrol(panelcaozuo,'style','pushbutton','string','PLOT','Units','normalized','Position',[0.6 0.2 0.08 0.3],'fontsize',10,'backgroundcolor',[1 0 1],'callback','flagflag=2;zhenduanfunction'); bclear=uicontrol(panelcaozuo,'style','pushbutton','string','CLEAR','units','normalized','position',[0.7 0.2 0.08 0.3],'fontsize',10,'HorizontalAlignment','left','backgroundcolor',[1 0

Matlab常见问题汇总(精) 22

1],'callback','flagflag=3;');

breset=uicontrol(panelcaozuo,'style','pushbutton','string','RESET','units','normalized','position',[0.8 0.2 0.08 0.3],'fontsize',10,'HorizontalAlignment','left','backgroundcolor',[1 0 1],'callback','clear,clc,close,');

%添加图像区

panel2=uipanel('position',[0.0 0.25 0.60 0.71],'backgroundcolor',[0.7 1 0.6]);

tuxiangkj=axes('units','normalized','position',[0.08 0.08 0.86 0.85],'parent',panel2); %图形说明区

panel4=uipanel('position',[0.0 0.0 0.5 0.25],'backgroundcolor',[0.5 0.7 0.9]);

t4=uicontrol(panel4,'style','text','Units','normalized','Position',[0 0.8 0.32 0.18],'string','请选择要显示的图像','fontsize',12,'backgroundcolor',[0.5 0.7 0.9]); % buttongroup1=uibuttongroup(panel4,'Units','normalized','Position',[0.01 0.55 0.98 0.25],'backgroundcolor',[0.5 0.7 0.9]);

radio1=uicontrol(panel4,'style','radio','Units','normalized','Position',[0.01 0.54 0.19 0.22],'string','R(t)','fontsize',12,'value',1,'backgroundcolor',[0.5 0.7 0.9]);

radio2=uicontrol(panel4,'style','radio','Units','normalized','Position',[0.2 0.54 0.2 0.22],'string','失效率','fontsize',12,'value',0,'backgroundcolor',[0.5 0.7 0.9]);

radio3=uicontrol(panel4,'style','radio','Units','normalized','Position',[0.4 0.54 0.2 0.22],'string','F(t)','fontsize',12,'value',0,'backgroundcolor',[0.5 0.7 0.9]); radio4=uicontrol(panel4,'style','radio','Units','normalized','Position',[0.6 0.54 0.2 0.22],'string','f(t)','fontsize',12,'value',0,'backgroundcolor',[0.5 0.7 0.9]); radio5=uicontrol(panel4,'style','radio','Units','normalized','Position',[0.8 0.54 0.19 0.22],'string','u(t)','fontsize',12,'value',0,'backgroundcolor',[0.5 0.7 0.9],'enable','off');

45.线性规划示例

用MATLAB优化工具箱解线性规划的命令如下: 1、模型: minz=cX

s.t AX≤b 命令:x=linprog(c,A,b) 示例:

c=[1.3907,1.0473,1.9387] c1=c(1); c2=c(2); c3=c(3);

A=[-0.3907,-c2,-c3

0.6125*c1-1,0.6125*c2,0.6125*c3 0.425*c1,0.425*c2-1,0.425*c3

-0.8625*c1,1-0.8625*c2,-0.8625*c3 0.0625*c1,0.0625*c2,0.0625*c3-1 -0.5375*c1,-0.5375*c2,1-0.5375*c3 ]

b=[0;0;0;0;0;0] Aeq=[1,1,1]

Matlab常见问题汇总(精) 23

beq=[1]

x=linprog(c,A,b,Aeq,beq) f=c*x

46.求积分:数值方法和符号函数方法,示例

clear,clc %符号积分

%int(s,v,a,b):s是被积函数或符号表达式,v是自变量,a,b分别表示定积分的下限和上限。 %例:求函数x^2+y^2+z^2的三重积分。结果vF2 =224.92153

%内积分上下限都是函数,对z积分下限是sqrt(x*y),积分上限是x^2*y;对y积分下限是sqrt(x),积分上限是x^2;对x的积分下限1,上限是2 syms x y z %定义符号变量 f=x^2+y^2+z^2

F2=int(int(int(f,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) % vF2=vpa(F2)%给出默认精度的数值解 vF3=eval(F2)%获得数值解 %数值积分

%[I,n]=quad('fname',a,b,tol,trace),基于变步长辛普生法,还有其他方法。

%例:求函数exp(-x*x)的定积分,积分下限为0,积分上限为1。结果Isim =0.7468 fun=@(x)exp(-x.*x); %用内联函数定义被积函数 Isim=quadl(fun,0,1) %辛普生法

47.fplot函数图像,示例

fun.m文件程序: function y=fun(x) %初始化

a=3.14269252612*10^(-7); b=0.950735354; p=0.999279067; sigma=1.091473;

y=-a.*(b.^x).*(p.^fm(x)).*(sigma.^fn(x)); main.m文件程序: clear,clc,close all %作图

fplot(@fun,[1350,10000])

48.层次分析法通用程序模板

clear,clc

%层次分析法的matlab程序

Matlab常见问题汇总(精) 24

disp('请输入判断矩阵A(n阶)'); A=input('A='); [n,n]=size(A); x=ones(n,100); y=ones(n,100); m=zeros(1,100); m(1)=max(x(:,1)); y(:,1)=x(:,1); x(:,2)=A*y(:,1); m(2)=max(x(:,2)); y(:,2)=x(:,2)/m(2);

p=0.0001;i=2;k=abs(m(2)-m(1)); while k>p i=i+1;

x(:,i)=A*y(:,i-1); m(i)=max(x(:,i)); y(:,i)=x(:,i)/m(i); k=abs(m(i)-m(i-1)); end

a=sum(y(:,i)); w=y(:,i)/a; t=m(i); disp(' ');

disp('************************');

disp('特征指标')

disp('1.规范列平均:');disp(w); disp('2.最大特征值:');disp(t);

CI=(t-n)/(n-1);RI=[0 0 0.52 0. 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59]; CR=CI/RI(n);

disp('************************');

disp('检验属性') disp('1.CI=');disp(CI); disp('2.CR=');disp(CR); if CR<0.10

disp('结论:此矩阵的一致性可以接受!'); else

disp('结论:此矩阵的一致性不能接受!') end

49.fslove数值法解方程组,程序示例

myfun.m文件程序如下: function F = myfun(x) t00=[1350 1

Matlab常见问题汇总(精) 25

502.4 1 836.5 1 596.8 1 1323.4 1 729.3 1 295.4 0 676.2 1 939.6 1 306.58 0 12.68 0 394.6 0 202.1 0 88.2 1 344.7 1 296.6 1 56.4 1 128.2 0 42.8 1 163.3 1 227.7 1 18.6 0 31.1 1 144.5 1 55.6 1 102.8 1 87 1 46.94 1 ];

for i=1:length(t00)

t000(i)=sum(t00(1:i,1)); end

% t=t0(:,1); t=t000'; c=t00(:,2); tt=[0;t]; tt(end)=[];

%下面求M,N for i=1:length(t)

m(i)=sum(c(1:i)); n(i)=i-m(i); end

m=m';n=n';

t4=t(2:length(t)); t44=tt(2:length(tt));

Matlab常见问题汇总(精) 26

m4=m(2:length(t)); n4=n(2:length(t));

%方程组 x=(a,p,sigma,b) F = [length(c)/x(1)-(1/(x(4)+1))*sum((x(2).^m).*(x(3).^n).*(t.^(x(4)+1))-(x(2).^m).*(x(3).^n).*(tt.^(x(4)+1)));

(1/x(2))*sum(c.*m)-(x(1)/(x(4)+1))*sum(m.*(x(2).^m).*(x(3).^n).*(t.^(x(4)+1))-m.*(x(2).^m).*(x(3).^n).*(tt.^(x(4)+1)));

(1/x(3))*sum(c.*n)-(x(1)/(x(4)+1))*sum(n.*(x(2).^m).*(x(3).^n).*(t.^(x(4)+1))-n.*(x(2).^m).*(x(3).^n).*(tt.^(x(4)+1)));

(1/x(4))*sum(c.*log(t))-(x(1)/((x(4)+1).^2))*(sum((x(2).^m4).*(x(3).^n4).*(t4.^(x(4)+1)).*((x(4)+1).*log(t4)-1)-(x(2).^m4).*(x(3).^n4).*(t44.^(x(4)+1)).*((x(4)+1).*log(t44)-1))+sum((x(2).^m(1)).*(x(3).^n(1)).*(t(1).^(x(4)+1)).*((x(4)+1).*log(t(1))-1))) ];

main.m程序如下: clear,clc

x0 = [1 1 1 1]; % Make a starting guess at the solution options=optimset('Display','iter'); % Option to display output [x,fval] = fsolve(@myfun,x0,options) % Call optimizer

50.matlab随机数生成命令小结

Matlab中有两个最基本生成随机数的函数。 1.rand()

生成(0,1)区间上均匀分布的随机变量。基本语法: rand([M,N,P ...])

生成排列成M*N*P... 向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

rand(5,1) %生成5个随机数排列的列向量,一般用这种格式 rand(5) %生成5行5列的随机数矩阵

rand([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。 x=rand(100000,1); hist(x,30);

由此可以看到生成的随机数很符合均匀分布。(视频教程会略提及hist()函数的作用) 2.randn()

生成服从标准正态分布(均值为0,方差为1)的随机数。基本语法和rand()类似。 randn([M,N,P ...])

生成排列成M*N*P... 向量的随机数。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

randn(5,1) %生成5个随机数排列的列向量,一般用这种格式 randn(5) %生成5行5列的随机数矩阵

randn([5,4]) %生成一个5行4列的随机数矩阵 生成的随机数大致的分布。

Matlab常见问题汇总(精) 27

x=randn(100000,1); hist(x,50);

由图可以看到生成的随机数很符合标准正态分布。 b. 连续型分布随机数

如果你安装了统计工具箱(Statistic Toolbox),除了这两种基本分布外,还可以用Matlab内部函数生成符合下面这些分布的随机数。 3.unifrnd()

和rand()类似,这个函数生成某个区间内均匀分布的随机数。基本语法 unifrnd(a,b,[M,N,P,...])

生成的随机数区间在(a,b)内,排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

unifrnd(-2,3,5,1) %生成5个随机数排列的列向量,一般用这种格式 unifrnd(-2,3,5) %生成5行5列的随机数矩阵

unifrnd(-2,3,[5,4]) %生成一个5行4列的随机数矩阵 %注:上述语句生成的随机数都在(-2,3)区间内. 生成的随机数大致的分布。 x=unifrnd(-2,3,100000,1); hist(x,50);

由图可以看到生成的随机数很符合区间(-2,3)上面的均匀分布。 4.normrnd()

和randn()类似,此函数生成指定均值、标准差的正态分布的随机数。基本语法 normrnd(mu,sigma,[M,N,P,...])

生成的随机数服从均值为mu,标准差为sigma(注意标准差是正数)正态分布,这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

normrnd(2,3,5,1) %生成5个随机数排列的列向量,一般用这种格式 normrnd(2,3,5) %生成5行5列的随机数矩阵

normrnd(2,3,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的正态分布都是均值为2,标准差为3. 生成的随机数大致的分布。 x=normrnd(2,3,100000,1); hist(x,50);

如图,上半部分是由上一行语句生成的均值为2,标准差为3的10万个随机数的大致分布,下半部分是用小节“randn()”中最后那段语句生成10万个标准正态分布随机数的大致分布。 注意到上半个图像的对称轴向正方向偏移(准确说移动到x=2处),这是由于均值为2的结果。

而且,由于标准差是3,比标准正态分布的标准差(1)要高,所以上半部分图形更胖(注意x轴刻度的不同)。 5.chi2rnd()

此函数生成服从卡方(Chi-square)分布的随机数。卡方分布只有一个参数:自由度v。基本语法

chi2rnd(v,[M,N,P,...])

生成的随机数服从自由度为v的卡方分布,这些随机数排列成M*N*P... 向量。如果只

Matlab常见问题汇总(精) 28

写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: chi2rnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式 chi2rnd(5,5) %生成5行5列的随机数矩阵

chi2rnd(5,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的卡方分布的自由度都是5 生成的随机数大致的分布。 x=chi2rnd(5,100000,1); hist(x,50);

6.frnd()

此函数生成服从F分布的随机数。F分布有2个参数:v1, v2。基本语法 frnd(v1,v2,[M,N,P,...])

生成的随机数服从参数为(v1,v2)的卡方分布,这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: frnd(3,5,5,1) %生成5个随机数排列的列向量,一般用这种格式 frnd(3,5,5) %生成5行5列的随机数矩阵

frnd(3,5,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(v1=3,v2=5)的F分布 生成的随机数大致的分布。 x=frnd(3,5,100000,1); hist(x,50);

从结果可以看出来, F分布集中在x正半轴的左侧,但是它在极端值处也很可能有一些取值。 7.trnd()

此函数生成服从t(Student's t Distribution,这里Student不是学生的意思,而是Cosset.W.S.的笔名)分布的随机数。t分布有1个参数:自由度v。基本语法 trnd(v,[M,N,P,...])

生成的随机数服从参数为v的t分布,这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: trnd(7,5,1) %生成5个随机数排列的列向量,一般用这种格式 trnd(7,5) %生成5行5列的随机数矩阵

trnd(7,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(v=7)的t分布 生成的随机数大致的分布。 x=trnd(7,100000,1); hist(x,50);

可以发现t分布比标准正太分布要“瘦”,不过随着自由度v的增大,t分布会逐渐变胖,当自由度为正无穷时,它就变成标准正态分布了。 接下来的分布相对没有这么常用,同时这些函数的语法和前面函数语法相同,所以写得就简略一些——在视频中也不会讲述,你只需按照前面那几个分布的语法套用即可,应该不会有任何困难——时间足够的话这是一个不错的练习机会。 8.betarnd()

此函数生成服从Beta分布的随机数。Beta分布有两个参数分别是A和B。 生成beta分布随机数的语法是: betarnd(A,B,[M,N,P,...])

Matlab常见问题汇总(精) 29

9.exprnd()

此函数生成服从指数分布的随机数。指数分布只有一个参数: mu, 生成指数分布随机数的语法是: betarnd(mu,[M,N,P,...])

10.gamrnd()

生成服从Gamma分布的随机数。Gamma分布有两个参数:A和B。 生成Gamma分布随机数的语法是: gamrnd(A,B,[M,N,P,...])

11.lognrnd()

生成服从对数正态分布的随机数。其有两个参数:mu和sigma,服从这个这样的随机数取对数后就服从均值为mu,标准差为sigma的正态分布。 生成对数正态分布随机数的语法是: lognrnd(mu,sigma,[M,N,P,...])

12.raylrnd()

生成服从瑞利(Rayleigh)分布的随机数。其分布有1个参数:B。 生成瑞利分布随机数的语法是: raylrnd(B,[M,N,P,...])

13.wblrnd()

生成服从威布尔(Weibull)分布的随机数。其分布有2个参数:scale 参数 A和shape 参数 B。

生成Weibull分布随机数的语法是: wblrnd(A,B,[M,N,P,...])

还有非中心卡方分布(ncx2rnd),非中心F分布(ncfrnd),非中心t分布(nctrnd), 括号中是生成服从这些分布的函数,具体用法用: help 函数名 查找。

c. 离散型分布随机数

离散分布的随机数可能的取值是离散的,一般是整数。 14.unidrnd()

此函数生成服从离散均匀分布的随机数。Unifrnd是在某个区间内均匀选取实数(可为小数或整数),Unidrnd是均匀选取整数随机数。离散均匀分布随机数有1个参数:n, 表示从{1, 2, 3, ... N}这n个整数中以相同的概率抽样。基本语法: unidrnd(n,[M,N,P,...])

这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

unidrnd(5,5,1) %生成5个随机数排列的列向量,一般用这种格式 unidrnd(5,5) %生成5行5列的随机数矩阵

unidrnd(5,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布 生成的随机数大致的分布。 x=unidrnd(9,100000,1); hist(x,9);

可见,每个整数的取值可能性基本相同。 15.binornd()

Matlab常见问题汇总(精) 30

此函数生成服从二项分布的随机数。二项分布有2个参数:n,p。考虑一个打靶的例子,每命中率为p,共射击N,那么一共击中的次数就服从参数为(N,p)的二项分布。注意p要小于等于1且非负,N要为整数。基本语法: binornd(n,p,[M,N,P,...])

生成的随机数服从参数为(N,p)的二项分布,这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子: binornd(10,0.3,5,1) %生成5个随机数排列的列向量,一般用这种格式 binornd(10,0.3,5) %生成5行5列的随机数矩阵

binornd(10,0.3,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(10,0.3)的二项分布 生成的随机数大致的分布。 x=binornd(10,0.45,100000,1); hist(x,11);

我们可以将此直方图解释为,假设每射击命中率为0.45,每论射击10次,共进行10万轮,这个图就表示这10万轮每轮命中成绩可能的一种情况。 16.geornd()

此函数生成服从几何分布的随机数。几何分布的参数只有一个:p。几何分布的现实意义可以解释为,打靶命中率为p,不断地打靶,直到第一次命中目标时没有击中次数之和。注意p是概率,所以要小于等于1且非负。基本语法: geornd(p,[M,N,P,...])

这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

geornd(0.4,5,1) %生成5个随机数排列的列向量,一般用这种格式 geornd(0.4,5) %生成5行5列的随机数矩阵

geornd(0.4,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(0.4)的二项分布 生成的随机数大致的分布。 x=geornd(0.4,100000,1); hist(x,50);

17.poissrnd()

此函数生成服从泊松(Poisson)分布的随机数。泊松分布的参数只有一个:lambda。此参数要大于零。基本语法: geornd(p,[M,N,P,...])

这些随机数排列成M*N*P... 向量。如果只写M,则生成M*M矩阵;如果参数为[M,N]可以省略掉方括号。一些例子:

poissrnd(2,5,1) %生成5个随机数排列的列向量,一般用这种格式 poissrnd(2,5) %生成5行5列的随机数矩阵

poissrnd(2,[5,4]) %生成一个5行4列的随机数矩阵

%注:上述语句生成的随机数所服从的参数为(2)的泊松分布 生成的随机数大致的分布。 x=poissrnd(2,100000,1); hist(x,50);

其他离散分布还有超几何分布(Hyper-geometric, 函数是hygernd)等。

Matlab常见问题汇总(精) 31

51.神经网络算法编程程序模板

clear,clc,close all %读取数据

data=[1 2.718281828 2 7.3056099 3 20.08553692 4 54.59815003 5 148.4131591 6 403.4287935 7 1096.633158 8 2980.957987 9 8103.083928 10 22026.46579 11 59874.14172 12 162754.7914 13 442413.392 14 1202604.284 15 3269017.372 16 8886110.521 17 24154952.75 18 65659969.14 19 178482301 20 485165195.4 21 1318815734 22 3584912846 23 9744803446 24 2122130 25 720049337 ];

%训练预测数据

data_train=data(1:20,:); data_test=data(21:25,:); input_train=data_train(:,1)'; output_train=data_train(:,2)'; input_test=data_test(:,1)'; output_test=data_test(:,2)'; %数据归一化

[inputn,mininput,maxinput,outputn,minoutput,maxoutput]=premnmx(input_train,output_train); %对p和t进行字标准化预处理 %创建神经网络

net=newff(minmax(inputn),[10,10,1],{'tansig','tansig','purelin'},'trainlm'); net.trainParam.epochs=1000;

Matlab常见问题汇总(精) 32

net.trainParam.lr=0.1;

net.trainParam.goal=0.000000001; %net.trainParam.show=NaN %网络训练

net=train(net,inputn,outputn);

%数据归一化

inputn_test = tramnmx(input_test,mininput,maxinput); an=sim(net,inputn_test);

bpoutput=postmnmx(an,minoutput,maxoutput); %预测误差

error=bpoutput-output_test; k=error./output_test; figure(1)

plot(bpoutput,':og') hold on

plot(output_test,'-*');

legend('预测输出','实际输出')

title('BP网络预测输出','fontsize',12) ylabel('函数输出','fontsize',12) xlabel('样本','fontsize',12) figure(2)

plot(error,'-*')

title('BP网络预测误差','fontsize',12) ylabel('误差','fontsize',12) xlabel('样本','fontsize',12) figure(3) plot(k,'-*');

title('神经网络预测误差百分比')

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bpoutput output_test

52符号函数求定积分

syms x

int(x^7,0,1) %定积分 int(1/x,1,2)%定积分

53.求极限

syms x;

Matlab常见问题汇总(精) 33

limit((x-2)/(x^2-4),2)% 求函数在某点极限

limit(1/x,x,0,'left'); % 求函数在x趋于0的左极限

54.图形渲染、延时动画

clear,clc,close cylinder%圆柱 pause(2)%延时2s hold on pause(2) sphere%球形 pause(2)

shading interp%设置阴影 axis equal

55.符号函数求根、作图

syms x;

roots=solve(x^2+x-3) ezplot(x^2+x-3) hold on

plot([-2*pi 2*pi],[1 1],'g');

plot(double(roots(1))*[1 1],[-5 10],'r');

56.构造复合函数

syms x y; f=1/x^3; g=tan(y); compose(f,g)

ans =

1/tan(y)^3

57.不定积分

syms x

Matlab常见问题汇总(精) 34

int(1/(1+x^2),x)%求不定积分

ans =

atan(x)

58.求反函数

syms x;

f=sym(1/sin(x));

finverse(f)%求反函数

Warning: finverse(1/sin(x)) is not unique. (警告:反函数不是唯一的) ans =

asin(1/x)

59.多元函数求极限

syms x y

limit((sin(x+y)-sin(x))/y,y,0)%求多元函数的极限 ans = cos(x)

60.多元函数求偏导数

syms x y f=sin(x*y)

diff(f,x) %求多元函数的对x偏导数 diff(f,y)%求多元函数的对y偏导数 f =

sin(x*y)

y趋于0) ( Matlab常见问题汇总(精) 35

ans =

y*cos(x*y) ans =

x*cos(x*y)

61.求级数的和

syms x k

s1=symsum(1/x^2,1,inf) %求级数的和 s1 = pi^2/6

62. 求解微分方程、二次微分方程

Y1=dsolve('Dy=1+y^2') %求解微分方程

Y2=dsolve('Dy=1+y^2','y(0)=1') %求解微分方程,有初始条件

y=dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0','x') %求解二次微分方程 Y3=simplify(y)%简化表达式 Y1 =

i -i tan(C3 + t) Y2 =

tan(pi/4 + t) y =

(5*cos(x))/3 + sin(x)*(sin(3*x)/6 + sin(x)/2) - (2*cos(x)*(- 3*tan(x/2)^4 + 6*tan(x/2)^2 + 1))/(3*(tan(x/2)^2 + 1)^3)

Matlab常见问题汇总(精) 36

Y3 =

1 - (8*(cos(x)/2 - 1/2)^2)/3

63.矩阵的秩、逆阵、迹、行列式的值

a=[1 2 0 2 5 -1 4 10 -1]

b=det(a)%行列式的值 c=inv(a)%逆阵 d=trace(a)%迹 f=norm(a)%范数 g=cond(a)% a =

1 2 0 2 5 -1 4 10 -1 b =

1 c =

5 2 -2 -2 -1 1 0 -2 1 d =

5 f =

Matlab常见问题汇总(精) 37

12.3171 g =

78.1154

本文档系个人原创,少部分代码是直接借用网上的实例

本文档是根据N年的matlab编程应用经历,把一些自己遇到的常用的问题总结起来而成

欢迎有兴趣的朋友继续补充和添加

本人乐意并且欢迎交流与探讨邱秋1159972126,matlab初学者交流邱秋群142990477

2015/11/18

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务