数值分析matlab函数.docx

上传人:b****2 文档编号:23554405 上传时间:2023-05-18 格式:DOCX 页数:26 大小:28.05KB
下载 相关 举报
数值分析matlab函数.docx_第1页
第1页 / 共26页
数值分析matlab函数.docx_第2页
第2页 / 共26页
数值分析matlab函数.docx_第3页
第3页 / 共26页
数值分析matlab函数.docx_第4页
第4页 / 共26页
数值分析matlab函数.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数值分析matlab函数.docx

《数值分析matlab函数.docx》由会员分享,可在线阅读,更多相关《数值分析matlab函数.docx(26页珍藏版)》请在冰豆网上搜索。

数值分析matlab函数.docx

数值分析matlab函数

1.求数值积分:

fx=@(x)exp(1./x);

>>quadl(fx,1,5)

2.获取x=xlsread('oillack.xls','sheet1','a1:

a73')

excel文件名是oillack.xls,sheet1是表名,a1:

a73'是a列的1到73行

longx=xlsread('F:

\学习\大三\大三下\巷道力学模型\新建文件夹

(2)\1.xlsx','sheet1','a2:

a')

3.在matlab的图中插入文本框后将文本框旋转的方法:

text(0.5,0.6,'渗透率/mD','Rotation',90)

4.matlab中插入一条直线的方法:

line([0.010.01],[01.75])

5.Matlab中画三维图

x=-7.5:

0.5:

7.5;y=x;%先产生x及y二个阵列

>>[x,y]=meshgrid(x,y);%再以meshgrid形成二维的网格数据

>>z=x.^2+y.^2;%产生z轴的数据

>>mesh(x,y,z)%将z轴的变化值以网格方式画出

>>surf(x,y,z)%将z轴的变化值以曲面方式画出

Matlab指数拟合方法

x=[198219922002];

y=[103.534.523.3];

cftool(x,y)

在弹出的对话框选择fitting,弹出新的对话框选择newfit,然后在第三个下拉菜单(Typeoffit)中选择Exponential,然后点击Apply,即可;最后结果

GeneralmodelExp1:

f(x)=a*exp(b*x)

Coefficients(with95%confidencebounds):

a=1.453e+082(-7.288e+084,7.317e+084)

b=-0.09312(-0.3464,0.1602)

 

6写入excel表格数据

Xlswrite(‘文件名’,变量,’sheet’,’A1’)

7.档中的Text Properties:

 

上标用 ^(指数) 

下标用 _(下划线) 

斜体 \it 

黑体 \bf 

希腊字母等特殊字符用 \加拼音如 

希腊字母等特殊字符用 \加拼音 如 

ρ\rho  密度参数

α \alpha

 β \beta 

γ \gamma

 ζ \theta 

Θ \Theta 

Г \Gamma 

δ \delta

 Δ \Delta 

ξ \xi

 Ξ \Xi 

ε \elta 

ε \epsilon 

δ \zeta 

μ \miu 

υ \nu 

η \tau 

λ \lambda 

∧ \Lambda 

π \pi 

∏ \Pi 

ζ \sigma 

∑ \Sigma 

θ \phi 

Φ \Phi 

ψ \psi 

Ψ \Psi 

χ \chi

ω \omega 

Ω \Omega 

< \leq 

> \geq 

不等于 \neq 

<< \ll

 >> \gg 

正负 \pm 

左箭头 \leftarrow 

右箭头 \rightarrow 

上箭头 \uparrow 

例 text(2,3,'\alpha_2^\beta') 

注:

 可用{}把须放在一起的括起来 

Matlab图形中允许用TEX文件格式来显示字符。

使用\bf,\it,\rm表示黑体,斜体,正体字符,特别注意大括号{ }的用法。

8读取txt文件数据

方法一:

 

file/importdata....../next/finish 

>>whos 

Name          Size                  BytesClass

data          5x4                     160doublearray 

textdata      4x1                     300cellarray

Grandtotalis54elementsusing460bytes

>>data

data=

          1         11        111       1111 

          2         22        222       2222 

          3         33        333       3333 

          4         44        444       4444 

          5         55        555       5555

>>textdata

textdata=

   '你好' 

   '欢迎来到' 

   '论坛' 

   ''

方法二:

 

[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) 

说明:

%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。

 

这里%s的个数和[a1,a2,a3,a4]对应。

 

>>[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

a1=

   '1' 

   '2' 

   '3' 

   '4' 

   '5'

a2=

   '11' 

   '22' 

   '33' 

   '44' 

   '55'

a3=

   '111' 

   '222' 

   '333' 

   '444' 

   '555'

a4=

   '1111' 

   '2222' 

   '3333' 

   '4444' 

   '5555' 

因以字符串的形式读入,所以有''。

 

————————————————————————————————

三、中文数据英文混乱如test.txt

你好 

1111111111 

欢迎来到 

2222222222 

论坛 

3333333333 

 

4444444444 

5555555555

说明:

这种内容格式的文件用上面的方法是不行的。

以下是由chinamaker编写的一种方法:

fidin=fopen('test.txt');                              %打开test2.txt文件             

fidout=fopen('mkmatlab.txt','w');                      %创建MKMATLAB.txt文件 

while~feof(fidin)                                     %判断是否为文件末尾               

   tline=fgetl(fidin);                                %从文件读行   

   ifdouble(tline

(1))>=48&&double(tline

(1))<=57      %判断首字符是否是数值 

      fprintf(fidout,'%s\n\n',tline);                 %如果是数字行,把此行数据写入文件MKMATLAB.txt 

      continue                                        %如果是非数字继续下一次循环 

   end 

end 

fclose(fidout); 

MK=importdata('MKMATLAB.txt');     %将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来 

>>MK

MK=

          1         11        111       1111 

          2         22        222       2222 

          3         33        333       3333 

          4         44        444       4444 

          5         55        555       5555

9load(‘1.txt’)

Matlab常用的数学函数

函数

说明

abs(x)

标量的绝对值或向量的长度

angle(z)

复数z的相角(Phaseangle)

sqrt(x)

开平方

real(z)

复数z的实部

img(z)

复数z的虚部

conj(z)

复数z的共轭复数

round(x)

四舍五入到最近的整数

floor(x)

向负无穷方向,找出紧邻的整数

fix(x)

向原点方向,找出紧邻的整数

ceil(x)

向正无穷方向,找出紧邻的整数

rat(x)

将实数x化为分数表示

rats(x)

将实数x化为多项分数展开

sign(x)

符号函数(signumfunction)当x<0时,sign(x)=-1;当x=0时sign(x)=0;当x>0时,sign(x)=1

rem(x,y)

求x除以y的余数

gcd(x,y)

整数x和y的最大公约数

lcm(x,y)

整数x和y的最小公倍数

exp(x)

自然指数ex

pow2(x)

2的指数2x

log(x)

以e为底的对数,即自然对数或ln(x)

log2(x)

以2为底的对数log2(x)

log10(x)

以10为底的对数log10(x)

Matlab常用的三角函数

sin(x)

正弦函数

cos(x)

余弦函数

tan(x)

正切函数

asin(x)

反正弦函数

acos(x)

反余弦函数

atan(x)

反正切函数

atan2(x,y)

四象限的反正切函数

sinh(x)

双曲余弦函数

cosh(x)

双曲余弦函数

tanh(x)

双曲正切函数

asinh(x)

反双曲正弦函数

acosh(x)

反双曲余弦函数

atanh(x)

反双曲正切函数

计算向量元素统计量的常用函数

min(x)

向量x的元素的最小值

max(x)

向量x的元素的最大值

mean(x)

向量x的元素的平均值

median(x)

向量x的元素的中位值

std(x)

向量x的元素的标准差

diff(x)

向量x的相邻元素的差

sort(x)

对向量x的元素进行排序(Sorting)

length(x)

向量x的元素个数

norm(x)

向量x的欧氏长度

sum(x)

向量x的元素总和

prod(x)

向量x的元素总乘积

cumsum(x)

向量x的累计元素总和

cumprod(x)

向量x的累计元素总乘积

dot(x,y)

向量x和y的内积

cross(x,y)

向量x和y的外积

x=lsqr(A,b)

最小二乘解:

inv(A)

求矩阵的逆

det(A)

求行列式的值

[L,U,P]=lu(A)

求解Ax=b:

x=A\b

LU分解:

其中P为排列矩阵LU=PA

cond(A,p)

求矩阵的p范数表示的条件数(p=1,2,inf等)

cond(A)

求矩阵用2范数表示的条件数

norm(A,p)

求矩阵的p范数(p=1,2,inf等)

norm(A)

求矩阵的2范数

L=chol(A)

求解矩阵A的cholesky分解

factorial(x)

求x的阶乘

Matlab常用的数学函数

int8

转换成带正负号、8位的整数,其值域为[-128,-127]

int16

转换成带正负号、16位的整数,其值域为[-32768,32767]

int32

转换成带正负号、32位的整数,其值域为[-231,231-1]

uint8

转换成不带负号、8位的整数,其值域为[0,255]

uint16

转换成不带正负号、16位的整数,其值域为[0,65535]

uint32

转换成不带正负号、32位的整数,其值域为[0,232-1]

single

转换成single(单精度浮点数),占用32位(4byte)

double

转换成double(双精度浮点数),占用64位(8byte)

char

转换成字符或字符串,每个字符占用(16位)(2byte)

formatshort

(这是默认的)小数点后4位

Formatlong

15位数字表示

Formatshorte

5位科学计数表示

Formatlonge

15位科学计数表示

Ctrl+C

即同时按Ctrl及C二个键)可以用来中止执行中的Matlab的工作。

利用a(k,:

)或a(:

k)分别表示取矩阵a的第k行或第k列

图像操作:

读取图像:

用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。

比如

  

  >>f=imread('chestxray.jpg');

  读进来的图像数据被保存在变量f中。

尾部的分号用来抑制输出。

如果图片是彩色的,可以用rgb2gray转换成灰度图:

  

  >>f=rgb2gray(f);

  然后可以用size函数看图像的大小

  

  >>size(f)

  如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N

  

  >>[M,N]=size(f);

  用whos命令查看变量的属性

  

  >>whosf

  显示图像:

用imshow显示图像

  

  imshow(f,G)

  其中f是图像矩阵,G是像素的灰度级,G可以省略。

比如

  

  >>imshow(f,[100200])

  图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。

pixval命令可以用来查看图像上光标所指位置的像素值。

  

  pixval

  例如

  

  >>f=imread('rose_512.tif');

  >>whosf

  >>imshow(f)

  如果要同时显示两幅图像,可以用figure命令,比如

  

  >>figure,imshow(g)

  用逗号可以分割一行中的多个命令。

imshow的第二个参数用一个空的中括号:

  

  >>imshow(h,[])

  可以使动态范围比较窄的图像显示更清楚。

  写图像。

用imwrite写图像

  

  imwrite(f,'filename')

  文件名必须包括指明格式的扩展名。

也可以增加第三个参数,显式指明文件的格式。

比如

  

  >>imwrite(f,'patient10_run1.tif','tif')

  也可以写成

  

  >>imwrite(f,'patient10_run1.tif')

  还可以有其他参数,比如jepg图像还有质量参数:

  

  >>imwrite(f,'filename.jpg','quality',q)

  q是0到100之间的一个整数。

对比不同质量的图像效果。

用imfinfo命令可以查看一个图像的格式信息,比如

  

  >>imfinfobubbles25.jpg

  可以把图像信息保存到变量中

  

  >>K=imfinfo('bubbles25.jpg');

  >>image_bytes=K.Width*K.Height*K.BitDepth/8;

  >>compressed_btyes=K.FileSize;

  >>compression_ratio=image_bytes/compressed_bytes

  数据类型。

MATLAB的数据类型包括:

  

  double双精度浮点

  uint8无符号8位整数

  uint16无符号16位整数

  uint32无符号32位整数

  int8有符号8位整数

  int16有符号16位整数

  int32有符号32位整数

  single单精度

  char字符

  logical逻辑型(二值)

  数据类型转换

  

  B=data_class_name(A)

  比如

  

  >>C=[1.41.5]

  >>D=uint8(C)

  图像类型分为:

  

  Intensityimage灰度图

  Binaryimage二值图

  Indexedimage索引图

  RGBimage彩色图

  在灰度图中每个像素可以是整型、浮点型或者逻辑型。

图像类型的像素类型可以转换

  

  functiontofrom

  im2uint8uint8logical,uint8,uint16,double

  im2uint16uint16logical,uint8,uint16,double

  mat2graydoubledouble

  im2doubledoublelogical,uint8,uint16,double

  im2bwlogicaluint8,uint16,double

  比如

  

  g=mat2gray(A,[Amin,Amax]);

  g=mat2gray(A);

  g=im2double(h);

  g=im2bw(f,T)

  其中A是浮点型的图像,Amin和Amax是浮点数的范围,h和f是任意类型的图像,T是分割的阈值。

  数组(向量)索引:

创建向量(数组):

  

  >>v=[135791113]

  用小括号对向量进行索引(取数组中的某个元素):

  

  >>v

(2)

  转置(将行向量通过转置变成列向量):

  

  >>w=v.'

  取向量其中的一部分:

  

  >>v(1:

3)第1个到第3个

  >>v(2:

4)

  >>v(3:

end)第3个到最后一个

  >>v(1:

end)

  >>v(:

)全部

  >>v(1:

2:

end)第1个到最后一个,每次增加2

  >>v(end:

-2:

1)最后一个到第1个,每次减2

  其中end总是表示最后一个。

  

  >>x=linspace(1,5,10)

  >>v([145])

  linspace函数产生一个范围内的平均分布。

  矩阵索引:

创建矩阵

  

  >>A=[123;456;789]

  取矩阵中的一个元素

  

  >>A(2,3)

  取矩阵中的一行或者一列

  

  >>C3=A(:

3)

  >>R2=A(2,:

  取矩阵中某些行某些列

  

  >>T2=A(1:

2,1:

3)

  对矩阵中某些元素进行赋值:

  

  >>B=A;

  >>B(:

3)=0

  用end表示最后一行或者最后一列:

  

  >>A(end,end)最后一行最后一列

  >>A(end,end-2)最后一行倒数第三列

  >>A(2:

end,end:

-2:

1)第2行到最后一行,最后一列到第一列,每次减2

  >>E=A([13],[23])第1、3行,第2、3列

  >>D=logical([100;001;000])

  >>A(D)取A中由D指定的位置上的元素

  >>v=T2(:

)把矩阵变成一个向量

  >>s=sum(A(:

))求和

  >>sum(sum(A))

  可以把矩阵操作用在图像上

  

  >>f=imread('filename');

  >>fp=矩阵列倒转

  >>imshow(fp)

  >>fc=

  >>imshow(fc)

  >>fs=

  >>imshow(fs)

  >>plot(f(512,:

))

  矩阵可以是多维的,用size看矩阵大小,用ndims命令常看矩阵的维数

  

  >>size(A,1)

  >>ndims(A)

  一些常用的矩阵

  

  zeroes(M,N)

  ones(M,N)

  true(M,N)

  false(M,N)

  magic(M)

  rand(M,N)

  randn(M,N)

  其中M、N表示矩阵的行数和列数。

比如

  

  >>A=5*ones(3,3)

  >>magic(3)

  >>B=rand(2,4)

  函数:

可以把一系列的MATLAB语句或者一个带参数的函数放在扩展名叫做m的文件中。

一个带函数的m文件有一下部分组成

  

  函数定义行

  H1行

  帮助部分

  函数体

  注释

  函数定义行的格式是

  

  function[outputs]=name(inputs)

  比如要写一个函数计算两个图像的和以及乘积

  

  function[s,p]=sumprod(f,g)

  其中f和g是输入的图像,而s是和,p是乘积。

返回值用中括号括起来,如果返回值只有一个,可以省略中括号。

如果函数没有输出,则中括号和等号都可以省略。

函数名字的命名规则和C语言是相同的。

定义好的函数可以在命令行调用:

  

  >>[s,p]=sumprod(f,g);

  也可以被其它函数调用。

如果只有一个返回值,调用时中括号也是可以省略的,比如

  

  >>y=sum(x);

  H1行是文本的第一行,是一个单行的注释,紧跟在函数定义行后面,之间不能有空行。

比如

  

  %SUMPRODComputesthesumandproductoftwoimages.

  百分号开始的文字表示注释。

当使用帮助命令

  

  >>helpfunction_name

  时,这个H1行会被首先显示出来。

如果使用lookfor命令,则会在所有H1行中查找指定的关键字。

这一行应该提供这个函数功能的一个概述。

帮助部分是紧跟在H1后的文本块,中间没有空行,用来提供对这个函数更详细的帮助说明。

在使用help命令时会显示所有这部分内容。

这部分内容由注释语句构成,全部由%开始。

接下来第一个非注释语句表示函

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1