symst; x??;;;;?;y??;;;;?;%定义自变量符号t%输入数据 f?fittype('f?x?','independent','t','coefficients',{'a','k','w'});
%定义拟合函数类型,自变量t,系数a,k,w;cfun?fit(x,y,f)xi=0:.1:15;yi=cfun(xi);plot(x,y,'r*',xi,yi,'b-');%显示拟合函数
然后保存M文件,命名为cfun.m;然后就可以在matlab命令窗口中输入文件名执行文件内容了,产生拟合结果。
C).曲线拟合工具箱:
首先输入要拟合的数据x和y矩阵,在matlab命令窗口中直接输入cftool(x,y)即可调出工具箱窗口界面,然后选择拟合类型等参数进行拟合即可。 8).matlab中的各种数学函数
inv 是矩阵求逆
quad 是求积分运算,并且是定积分 roots 是多项式求根
Round(x)就近取整
9).线性规划问题:
Matlab中线性规划的标准型为:
minc
xTx%目标函数,当约束条件不是标准型时必须转化为标准型。
s..tAx?b%约束条件 基本函数形式为linprog(c,A,b),它的返回值是向量x的值。还有其他一些调用格
式,如:
其中,fval返回目标函数的值,[x,fval]?linprog(c,A,b,Aeq,beq,LB,UB,x0,options),Aeq和beq对应等式约束Ax?b;LB和UB分别是x的上下界,是控制参数。
例6.解下列线性规划问题:
x0为x的初始值,optionsmaxz?2x1?3x2?5x3
?x1?x2?x3?7,可以编写M文件,如下: ?s..t?2x1?5x2?3x3?10?x1,x2,x3?0?c?[2;3;?5];a?[?2,5,?1];b??10;aeq?[1,1,1];beq?7;x?linprog(?c,a,b,aeq,beq,zeros(3,1));%是-c而非c,zeros(3,1)为初始值value?c'*x;%目标函数值
注:约束条件中有等号的药单独拿出来,写成aeq和beq的形式,目标函数是最大值时要加符号变成最小;当目标函数中含有常数项时要添加一个变量一个等式
x,并在约束条件中添加
ixi?1。
10)图形处理:
Matlab 可识别的图片文件格式有:tiff,png,hdf,bmp,jpg,jpeg,pcx,xwd,cur,ico等; Matlab 读取图像并转化为真彩图像、灰度图像、索引图像中的任一种。三种图形介绍略。
读取命令:p=imread(‘filename.jpg’,’jpg’),matlab使用这一个命令读取所有类型的图形文件。返回值p为一个MxNx3的包含unit8类型像素颜色值的数组,第二个参数‘jpg’给出了明确的文件格式,该参数可选,因为matlab一般能够从文件的内容正确推断出该文件的格式。
显示命令:image(p),只是该函数是对对象进行了缩放,若要得到实际尺寸的图形,可用命令函数imshow();
写入命令:imwrite(data,’newfilename.jpg’,’jpg’),第三个参数jpg指定输出文件的格式,data为像素数据矩阵,该命令将data数据写入硬盘,存储格式为jpg格式。
movie2avi:动画存储为avi格式命令 分析例子:
求助,如何将下列动画存为avi格式。
set(gca,'nextplot','replacechildren');[a,b,c]=sphere(30);mesh(2*a,2*b,2*c,2*c);hidden off;hold on;for j=1:24[x,y]=meshgrid([-sqrt(2):0.01:sqrt(2)*j/24]);z=x.^2+y.^2;mesh(x,y,z);axis equal;F=getframe;endmovie(F,2);
用matlab制作简单仿真动画,并生成.avi格式的电影文件:
第一种形式:利用for循环,在一定时间内控制图形窗口图像的显示,产生一段动态的演示过程: 如下:
set(gcf,'color','green'); grid on;
set(gca,'zlim',[-10,10]'); set(gca,'xlim',[-10,10]); set(gca,'ylim',[-10,10]); for i=1:10
set(gca,'view',[-i*3.75,3*i] ); pause(0.2); end
第二种形式:利用moviein和movie函数,现将生成的动画存入一个由movien
函数定义的数组中,每一帧为数组的一个元素,最后用movie重复演示,movie后面的数字代表演示次数。
x=[-30:0.2:30]; y=[-30:0.2:30];
[x,y]=meshgrid(x,y); n=5;
M = moviein(n); for i=1:n
z=sin(sqrt(2*(x).^2+2*(y).^2)-2*pi*i/10); zz=plot3(x,y,z,'parent',gca); mesh(x,y,z); grid on;
colormap([0,0.9,0.5]);
light('position',[1,1,2],'style','local','color','white'); material([0.5,0.4,0.3,10,0.3]); set(gca,'zlim',[-10,10]'); M(i)=getframe(gca); end
movie(M,20)
创建电影剪辑文件,并存储起来,如下:
aviobj=avifile('文件名.avi','fps',3);%定义一个avi文件,
%AVIOBJ = AVIFILE(FILENAME,'PropertyName',VALUE,'PropertyName',VALUE,...) %各属性详细说明见matlab帮助
for i=1:n
%在当前窗体上生成一帧图像
frame=getframe(gca); %获得一帧图像
aviobj=addframe(aviobj,frame);%并加到电影剪辑文件中 end
aviobj=close(aviobj);%关闭文件,结束数值仿真模拟过程。
11).声音的处理
Matlab提供两种读取声音文件的函数:wavread(‘filename.wav’)和auread(‘filename.au’),非别读取wav格式的文件盒au格式的文件;且两个函数均返回三个变量:取值(-1,1)之间的声音向量(n行1列)--代表振幅、以HZ为单位的采样频率(1个常数)和记录数据所用的位数(8位或16位,分辨率不同而已。%分辨率取值一般8位或16位%)。
播放命令:sound(data,rate),其中data是声音值向量,rate为回放频率,一般等于录音时的频率。该函数直接将数据传递为计算机的声卡。
例:[b16,f16,n]=wavread(‘filename.wav’); Sound(b16,f16);
[b8,f8,n]=wavread(‘filename.wav’);
Sound(b8,f8); %可分辨8位和16位音质的差别
声音片段剪切:例
[a,b,n]=wavread(‘filename.wav’);
C=[a(1:2000);a(3000:end)]; %将文件中2000-3000的片段剪切掉并将剩余片段组合起来存入c。
C=C*0.5; %将音频音量降低一半 Sound(a,b); %播放原文件
Sound(c,b); %播放剪切后的文件,对比效果 Plot(a); %画出原音频图像
Plot(c) %画出剪切后的文件图形
快速傅里叶变换fft(x):x为时域采样序列,生成取值为复数的频谱文件;ifft(x):逆变换,重新生成时域序列。 12)随机排序
如:x=[1,2,3,4,3,2,1,5],编写程序将数据随机排序,程序如下 X=X(randperm(numel(x)))
numel(x)获得变量长度
randperm(n)产生长度为n的随机数列 如: randperm(4) ans=
3 2 1 4
X(...) 取得X中相应元素产生新数列
附录A:matlab特殊字符、保留字和函数 .* / ./ \\ ^ .^ < > <= >= == ~= & && | || ~ 逻辑函数 All(a) 若逻辑向量a中的所有值都为真,则返回值为真 And(a,b) 若a,b都为真,则返回值为真 Any(a) Not(a) Or(a,b)
文件输入输出 load save csverad fprinft imread 若逻辑向量a中有元素为真,则返回值为真 非a,即若a为真,则返回值为假,若a为假,则返回值为真 若a或b为真,则返回值为真 小于 大于 小于等于 大于等于 等于 不等 元素级逻辑与(向量) 短路逻辑与(标量) 元素级逻辑或(向量) 短路逻辑或(标量) 一元非 数组乘法 矩阵除法 数组除法 矩阵后除,等同求逆效果 矩阵指数运算 数组指数运算