在命令窗口输入: >> xdata = 100:100:1000;
ydata = 1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]; beta0 = [0.1 0.1 0.2];
[beta,r,J] = nlinfit(xdata,ydata,'myfit3',beta0) ; beta 输出结果为:
beta =
0.0070 -0.0030 0.1012
这与例9结果( 0.0069 -0.0029 0.0809)很接近。
将其和前例的拟合曲线对比后可见,nlinfit函数的回归效果明显优于lsqcurvefit函数,对比结果见图4(红色曲线为nlinfit函数得到的回归曲线,蓝颜色的为lsqcurvefit函数得到的拟合曲线)。
-3 x 10 7 6.5 6 5.5 5 4.5 4 100
200 300 400 500 600 700 800 900 1000
图4 对比图
五、胞元数组与构架数组 1. 胞元数组
胞元数组的基本组分是胞元(Cell)。每一胞元在数组中平等,以下标区分。同一胞元数组中不同胞元可以存放不同类型和不同大小的数据,如任意维数值数组,字符串数组、符号对象等。
胞元标识(Cell Indexing):例A(2,3)表示A胞元数组第2行第3列的胞元;
胞元内容编址(Content Adressing):例A{2,3}表示A胞元数组第2行第3列的胞元存放的内容。
例如 clear
C_str='这是胞元数组创建例子';
R=reshape(1:9,3,3); Cn=[1+2i];
%按列排序
S_sym=sym('sin(-3*t)*exp(-t)'); %创建胞元数组方法之一 B{1,1}=C_str; B{1,2}=R; B{2,1}=Cn; B{2,2}=S_sym; %胞元的援引 a=B(1,2) class(a) a =
[3x3 double] ans = cell
%胞元内容的援引 b=B{1,2} class(b) b =
1 4 7 2 5 8 3 6 9 ans = double 2. 构架数组
组织数据能力比胞元数组更强,富于变化。
架构数组的基本组分是构架(structure)。数组中每个架构平等,以下标区分。构架必须在划分“域”后才能使用。数据不能直接存放于构架,而只能存放在域中。构架的域可以存放任何类型、任何大小的数组(如任意维数值数组,字符串数组、符号对象等),不同构架的同名域中存放的内容可以不同。
%
%
构架和域名间有小黑点“.”。 构架数组演示
(1)直接对域赋值产生“单构架” clear
G.name='一号房'; G.volume=2000;
G.temperature=[31.2,30.4,31.6,28.7];
G.humidity=[62.1,59.5,57.7,61.5;63,60,58.1,62.3]; (2)向第二个构架赋值,形成构架数组 G(2).name='二号房'; G(2).volume=2400; (3)构架数组显示 G G =
1x2 struct array with fields: name volume temperature humidity (4)构架元素显示 G(1) ans =
name: '一号房' volume: 2000
temperature: [31.2000 30.4000 31.6000 28.7000] humidity: [2x4 double] (5)构架域的显示 G.humidity ans =
62.1000 59.5000 57.7000 61.5000
63.0000 60.0000 58.1000 62.3000 ans = []
对于单构架,输入构架名可输出该构架的域中的内容,非单构架通常只能得到该构架的结构信息;指令窗输入构架域名,显示每一构架的该域内容。
一般代数方程组的符号求解函数S=solve('eq1','eq2',?,'eqn','v1','v2',?,'vn')的结果S就是构架数组形式,例如:
>>S = solve('x+y=5','x-y=1','x','y') S =
x: [1x1 sym] y: [1x1 sym] >> S.x ans = 3 >> S.y ans = 2
六、图像处理
在全国大学生数学建模竞赛中,与图像处理有关的赛题有三道,分别是2001年A题《三维血管重建》,2008年A题《数码相机定位》,2013年B题《碎纸片的拼接复原》。
下面简单介绍图像处理中的几个简单函数。
MATLAB支持的图像格式有*.bmp,*.jpg,*.ico,*.pcx,*.png,*.tif等。 1. imread函数
imread函数用于读入各种图像文件,其调用格式为:
A = imread('filename',fmt)
其中filename为指定工作目录下的图像文件名,fmt为图像格式,可选值为bmp,jpg,ico,pcx,png,tif等,如果不指定,Matlab自动根据文件头确定。A为读取的图像矩阵。
2. imwrite函数
imwrite函数用于输出图像,其调用格式为:
imwrite(A, 'filename',fmt)
将矩阵A写入当前工作目录下的filename.fmt文件。
3. imshow函数
该函数是最常用的显示各种图像的函数,其调用格式有: imshow(I,n):用于显示灰度图像,n为灰度级,默认为256;
imshow(I,[low,high]):用于显示灰度图像,[low,high]为图像的数域,如不清楚,可使用空向量[]。
例如,输入
>> I = imread('cameraman.tif'); imshow(I,[]) 4. imnoise函数
该函数可以对图像添加一些典型的噪声。其调用格式为:
imnoise(I, 'type',parameters)
其中type为噪声类型,包括: 'gaussian':高斯白噪声, 'localvar' :0均值高斯白噪声 'poisson':泊松噪声 'salt & pepper':椒盐噪声 'speckle':乘性噪声 在命令窗口输入:
>> I1 = imread('cameraman.tif'); subplot(2,2,1);imshow(I1);title('原始图像'); I2 = imnoise(I1, 'gaussian'); subplot(2,2,2);imshow(I2);title('高斯白噪声'); I3 = imnoise(I1,'salt & pepper');subplot(2,2,3); imshow(I3);title('椒盐噪声'); I4 = imnoise(I1,'speckle');subplot(2,2,4);imshow(I4);title('乘性噪声'); 5. fspecial函数
fspecial函数用于建立预定义的滤波算子,其语法格式为: h = fspecial('type') h = fspecial('type',para)
其中type指定算子的类型,para指定相应的参数;
type的类型有:
(1) 'average':为均值滤波,参数为hsize代表模板尺寸,默认值为[3 3]。 (2) 'disk':为圆形区域均值滤波,参数为radius代表区域半径,默认值为5。
(3) 'gaussian':为高斯低通滤波,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma为滤波器的标准值,单位为像素,默认值为0.5。
(4) 'laplacian' :为拉普拉斯算子,参数alpha用于控制算子形状,取值范围为[0,1],默认值为0.2。
(5) 'log' :为拉普拉斯高斯算子,有两个参数,hsize表示模板尺寸,默认值为[3 3],sigma
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数学建模竞赛中常用软件的操作(4)在线全文阅读。
相关推荐: