推荐数学建模matlab⽅法整理
disp()函数的常见⽤法
1、显⽰字符串
>> disp('sqrt(2)')
sqrt(2)
将要显⽰的字符串必须放在单引号⾥⾯
2、显⽰结果
>> disp(sqrt(2))
1.4142
3、显⽰多个字符
>> disp(['sqrt(2)=',num2str(sqrt(2))])
sqrt(2)=1.4142
格式必须如上所⽰,并且必须有num2str()函数~~~~
MATLAB导⼊excel数据
[NUM,TXT,RAW]=xlsread('example')
Example为⽂件名,NUM返回的是excel中的数据,TXT输出的是⽂本内容,RAW输出的是未处理数据读取第⼆个sheet中的数据
[NUM]=xlsread('example',2)
读取指定单元格中的数据
[NUM]=xlsread('example',2,'A3:D7')
matlab导⼊txt数据
ex=importdata('')
TXT中有4*3维的数据矩阵,⼀共有5*4维的元素矩阵。
data=ex.data
将TXT⽂本中的所有数据元素都存储在了data矩阵当中。
data
将⽂本中的所有⽂本格式数据都存储在了相应矩阵当中。
Unifrnd
R = unifrnd(A,B)
⽣成被A和B指定上下端点[A,B]的连续均匀分布的随机数组R。
如果A和B是数组,R(i,j)是⽣成的被A和B对应元素指定连续均匀分布的随机数。
如果N或P是标量,则被扩展为和另⼀个输⼊有相同维数的数组。
R = unifrnd(A,B,m,n,...) 或R = unifrnd(A,B,[m,n,...])
返回m*n*...数组。
如果A和B是标量,R中所有元素是相同分布产⽣的随机数。
如果A或B是数组,则必须是m*n*...数组。
Fminbnd
fminunc
fminsearch
fopen
1、matlab中fopen函数的常⽤调⽤格式
1)fileID?= fopen('filename')
2)fileID?= fopen('filename','permission')
其中fileID是⽂件代号,filename是要打开的⽂件名,permission是打开⽅式,默认的打开⽅式是只读模式。第⼀种情况时选择默认的打开⽅式,第⼆种是认为指定打开⽅式。
1. 2
fileID是⽂件的句柄(或者理解为⽂件的代号),使⽤fopen()后默认会返回⼀个⽂件代号给fileID变量,常⽤的返回值如下fileID=+N(N是正整数):表⽰⽂件打开成功,⽂件代号是N.
fileID=-1 : 表⽰⽂件打开不成功。fileID在此次⽂件关闭前总是有效的。
2. 3
permission是打开⽅式参数,打开⽅式参数由以下字符串确定:
r 读出w 写⼊(⽂件若不存在,⾃动创建)a 后续写⼊(⽂件若不存在,⾃动创建)r+ 读出和写⼊(⽂件应已存在)w+ 重新刷新写⼊,(⽂件若不存在,⾃动创建)a+ 后续写⼊(⽂件若不存在,⾃动创建)⽂件的存储格式:⽂件打开的默认⽅式是:⼆进制。以⽂本⽅式打开
fscanf
%a,%A?读⼊⼀个浮点值(仅C99有效)?%c?读⼊⼀个字符?%d?读⼊⼗进制整数?%i?读⼊⼗进制,⼋进制,⼗六进制整数?
%o?读⼊⼋进制整数?%x,%X?读⼊⼗六进制整数?%s?读⼊⼀个字符串,遇空格、制表符或换⾏符结束。?
%f,%F,%e,%E,%g,%G?⽤来输⼊实数,可以⽤⼩数形式或指数形式输⼊。?%p?读⼊⼀个指针?%u?读⼊⼀个⽆符号⼗进制整数?%n?⾄此已读⼊值的等价字符数?%[]?扫描字符集合?%%?读%符号?
*是通配符
matlab中函数fscanf在⽂件读取⽅⾯的实例如下:
从⽂件中有格式地读数据fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid ⽂件按照格式format读出数据并按size的格式放⼊内存。
a :读出的数据放⼊内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :⽂件号
size :a的数据的格式
N : 列向量
inf : 读出⽂件全部数据
[M,N] : 读出数据以M*N的格式放⼊变量名a内format :读出数据的格式
format是字符形式,与C语⾔基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。例:s=fscanf(fid,'%s')?返回⼀个字符。
a=fscanf(fid,']') 返回⼀个五位⼗进制整数。
size是⼀个[m n]的向量,m为⾏,n为列(注意,这⾥读取的顺序是按列优先排列的,不明⽩的话可以看下⾯的例⼦),若n取inf表⽰读到⽂件末尾。
fid为fopen打开⽂件的返回值,
format是格式化参数(像printf、scanf)。
举个⼩例⼦:
内容:? ?13, ? 1, ? ?3.4
3,  2.1, 23
1,  12,  2
4,  5.4, 6
现在为了读取001中的数据存在⼀个数组⾥,可以⽤如下⽅法
fid=fopen('');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这⾥得⽤单引号
fclose(fid);
这时data中的数据如下:
13 ? ?3 ? ? 1 ? ? 4
1 ? ? 2.1 ? 1
2 ? ?5.4
3.4 ? 23 ? ?2 ? ? 6
Mean
M = mean(A)
返回沿数组中不同维的元素的平均值。
如果A是⼀个向量,mean(A)返回A中元素的平均值。
如果A是⼀个矩阵,mean(A)将其中的各列视为向量,把矩阵中的每列看成⼀个向量,返回⼀个包含每⼀列所有元素的平均值的⾏向量。如果A是⼀个多元数组,mean(A)将数组中第⼀个⾮单⼀维的值看成⼀个向量,返回每个向量的平均值。
M = mean(A,dim)
返回A中沿着标量dim指定的维数上的元素的平均值。对于矩阵,mean(A,2)就是包含每⼀⾏的平均值的列向量。
《Simulink与信号处理》
应⽤举例编辑本段回⽬录
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7];
printf输出格式matlabmean(A)
ans =
3.0000
4.5000 6.0000
mean(A,2)
ans =
2.0000
4.0000
6.0000
6.0000
mean(A)
当A为向量时,那么返回值为该向量所有元素的均值
当A为矩阵时,那么返回值为该矩阵各列向量的均值
mean(A,2)
返回值为该矩阵的各⾏向量的均值
Sort
sort(A)若A是向量不管是列还是⾏向量,默认都是对A进⾏升序排列。sort(A)是默认的升序,⽽sort(A,'descend')是降序排序。sort(A)若A是矩阵,默认对A的各列进⾏升序排列
sort(A,dim)
dim=1时等效sort(A)
dim=2时表⽰对A中的各⾏元素升序排列
若欲保留排列前的索引,则可⽤?[sA,index] = sort(A)?,排序后,sA是排序好的向量,index 是向量sA 中对A 的索引。索引使排列逆运算成为可能。
由于在sort函数的结果中,是按升序排序的,要转换成降序,先⽤X
=eye(n)⽣成⼀个n维的单位阵,然后⽤X=rot90(X)将其旋转为次对⾓线的单位阵,再⽤原来矩阵乘以X即可,如要讲A 逆序排列采⽤如下步骤:
X=eye(size(A));
X=rot90(X);
A=A*X;
假如a是⼀个2*n的矩阵,即两⾏.
b=a(1,:);
[c,pos]=sort(b);%pos为排序后的下标,c为第⼀⾏的排序结果;
a(2,:)=a(2,pos);%第⼆⾏按照第⼀⾏排序的下标对应
a(1,:)=c;%第⼀⾏结果重新赋给a 的第⼀⾏
以下适⽤于m*n的矩阵按第⼀⾏排序
[ b, pos ] = sort( a( 1, : ) );
a = a( :, pos );
matlab按某⼀列排序,其他列不变办法
b=sortrows(a,2)%a 为要排序的矩阵。2表⽰按第⼏列进⾏排序,整数代表升序,负数代表降序。
%将矩阵a按照第2列的升序排列,其他列不会作升序排列,⽽是将跟随着第2列的变化,保持⼀⼀对应。
b=sortrows(a,-3)
%将矩阵a按照第3列的降序排列,其他列将跟随着第3列的变化,保持⼀⼀对应。
data =
132
765
498
sortrows(data,1)
ans =
132
498
765
sortrows(data,-1)
ans =
765
498
132
corrcoef
corrcoef(x,y)表⽰序列x和序列y的相关系数,得到的结果是⼀个2*2矩阵,其中对⾓线上的元素分别表⽰x和y的⾃相关,⾮对⾓线上的元素分别表⽰x与y的相关系数和y
与x的相关系数,两个是相等的。
Sim
sim函数⽤来运⾏Simulink模型。需要注意的是,⽤户⽆法控制其仿真过程(例如暂停、继续),⼀旦运⾏就会直到达到结束条件为⽌——这⼀点和通过模型窗⼝界⾯运⾏仿真不同。调⽤格式:
[t,x,y] = sim(model,timespan,options,ut);
[t,x,y1, y2, ..., yn] = sim(model,timespan,options,ut);
输⼊参数:
model:模型的名字,⽤单引号括起来(注意不带扩展名.mdl);
timespan:指定仿真时间范围,可以有⼏种情况:
标量tFinal,指定仿真结束时间。这种情况下开始时间为0;
两个元素的向量[tStart tFinal],同时指定开始时间和结束时间;
向量[tStart OutputTimes tFinal],除起⽌时间外,还指定输出时间点(通常输出时间t会包含更多点,这⾥指定的点相当于附加的点)。
options:指定仿真选项,是⼀个结构体,该结构体通过simset创建,包括模型求解器、误差控制等都可以通过这个参数指定(不修改模型,但使⽤和模型对话框⾥设置的不同选择)。ut:指定外部输⼊,对应于根模型的Inport模块。
除第⼀个输⼊参数外,其他参数都可以⽤空矩阵([])来表⽰模型的默认值。
输出参数:
t:仿真时间向量;
x:状态矩阵,每⾏对应⼀个时刻的状态,连续状态在前,离散状态在后;
y:输出矩阵,每⾏对应⼀个时刻;每列对应根模型的⼀个Outport 模块(如果Outport模块的输⼊是向量,则在y中会占⽤相应的列数)。