作业帮 > 高中作文 > 教育资讯

matlab学习日记

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/24 04:24:03 高中作文
matlab学习日记高中作文

篇一:Matlab学习笔记

第一讲 MATLAB基本知识

【↑】可用于调出前一个命令行,【↓】可调出后一个命令行,这样避免了重新输入的麻烦。当然历史窗口也具有此功能。

MATLAB文件格式有M、Mat、Mex等。扩展名为“.m”的文件称为M文件(程序文件)。顾名思义,该文件是解决问题的程序命令集合,工具箱中的函数大部分是M文件。扩展名为“.mat”的文件称为MAT文件(数据文件),用来保存工作空间的数据变量。扩展名为“.mex”的文件称为MEX文件(可执行文件),由MATLAB的编译器对M文件进行编译后产生。

表1-2 常见的文件管理命令

命令 说明

what 显示当前目录中的MATLAB文件

which文件主名 显示指定的文件的路径

type文件主名 显示指定的M文件内容

save文件名 存储定义的变量或演算结果到指定的

diary文件名 以ASCII码形式记录所有的输入和屏幕上输出的内容 cd.. 显示当前工作目录

cd 子目录名 进入子目录

dir 显示当前目录中所有文件

mkdir 建子目录

Load filename 寻找名称为filename.mat的档案,并以二进制格式载入

当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。基本的搜索过程是:①检查该命令是不是一个变量;②检查该命令是不是一个内部函数;③检查该命令是否当前目录下的M文件;④检查该命令是否是MATLAB搜索路径中其他目录下的M文件。(意即可直接调用M文件)

变量的命名的规则是:①变量名区分大小写;②变量名以字母开头,可以由字母、数字、下画线组成,但不能使用标点;③变量名长度不超过63位,最多只能含有63个字符,后面的字符无效。“%”是注释符,“%”后面的内容为注释,对MATLAB的计算不产生任何影响。MATLAB是基于矩阵运算的,单一的数也是1×1的矩阵。MATLAB将所有变量均保存为 double的形式,在“Command Window”的状态下,所有的变量均存在于工作空间中。

表1-4 永久变量表

名称 取 值

ans 用于结果的缺省变量名

pi 圆周率π的近似值(3.1416)

eps 数学中无穷小(epsilon)的近似值(2.2204e - 016) inf 无穷大,如 1/0 = inf (infinity)

NaN 非数,如 0/0 = NaN (Not a Number),inf / inf = NaN i,j 虚数单位:i = j =?1

realmax 系统所能表示的最大数值

realmin 系统所能表示的最小数值

nargin 函数的输入参数个数

nargout 函数的输出参数个数

定义变量时应避免与常量名重复,以免改变这些常量的值,如果已改变了某个常量的值,可以通过“clear 常量名”命令恢复该常量的初始设定值。

在MATLAB中进行符号运算时需要先用syms命令创建符号变量和表达式, (>> syms x)syms不仅可以声明一个变量,还可以指定这个变量的数学特性,比如:声明变量x,y为实数类型,可用命令 >> syms x y real

声明变量x,y为整数类型,可用命令 >> syms x y positive 表1-5 数学基本函数表

函数名 中文解释 函数名 中文解释

sin(x) 正弦函数 asin(x) 反正弦函数

cos(x) 余弦函数 acos(x) 反余弦函数

tan(x) 正切函数 atan(x) 反正切函数

exp(x) 以e为底的指数 log10(x) 以10为底数的对数

sqrt(x) log(x) 自然对数 开平方

abs(x) 绝对值或向量的长度 max(x) 最大值

min(x) 最小值 sum(x) 元素求和

round(x) sign(x) 符号函数 四舍五入到最近的整数 ceil(x) 朝正无穷方向取整 floor(x) 朝负无穷方向取整 fix(x) 朝零方向取整 gcd(x,y) 求两整数最大公约数 M文件

M文件是由MATLAB语句(命令或函数)构成的ASCII码文本文件

M文件有以下两种形式。

(1)命令文件(Script)

命令文件是MATLAB命令或函数的组合,没有输入输出参数,执行时只需在命令窗口中键入文件名回车即可。

(2)函数文件(Function)。函数文件可以有输入参数和返回输出参数,函数在自己的工作空间中操作局部变量。

MATLAB函数文件的组成:文件第一行是函数定义行,格式为

function [返回参数1,参数2,?]= 函数名(输入参数1,参数2,?)函数体 注意:第一行的有无,是区分命令文件与函数文件的重要标志;函数文件保存的文件名应与用户定义的函数名一致。

function f=wlb_2(x,y) %函数名为wlb_2,返回值为f

f=x.^3+y.^3-3*x.*y; %这是函数主体

保存为wlb_2(这是文件名,与函数名一致),然后在命令窗口中执行

>> wlb_2(2,3)

ans =17

运算符

C/C++不同

矩阵及其运算

表注意:数组(不是矩阵)的乘除法是指两同维数组对应元素之间的乘除法,它们的运算符只能为“.*”、“./”或“.\”,而表达式a*b、a/b、a^b是没有意义的。 矩阵的输入

(1)直接输入法最简单的建立矩阵,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号或回车键分隔。输入矩阵时,严格要求所有行有相同的列。

2)外部文件读入法。MATLAB语言允许用户调用在MATLAB环境之外定义的矩阵。可以利用?a href="http://www.zw2.cn/zhuanti/guanyuwozuowen/" target="_blank" class="keylink">我獾奈谋颈嗉鞅嗉褂玫木卣螅卣笤刂湟蕴囟ǚ侄戏挚葱辛胁贾谩?load函数用于调用数据文件(.mat),其调用方法为:load+文件名[参数]。

篇二:matlab学习笔记

1).

>> x=-2*pi:0.1:2*pi;

>> y1=sin(x);

>> y2=sin(x+pi/3)+2;

>> y3=cos(x);

>> plot(x,y1,'.-');

>> hold on

>> plot(x,y2,'.-')

>> hold on

>> plot(x,y3,'.-')

>> plot(x,y1,'.-');

>> hold on

>> plot(x,y2,'.-')

>> hold on

>> plot(x,y3,'.-')

h =

159.0056

Warning: Unable to interpret TeX string "\frac{\pi}{3}$)".%添加函数图标及纵横坐标轴名称,如下图显示 >>

2).常用画图命令:

Surf(x,y,z)、ezsurf(z)、ezmesh(z)

%使用surf画图,要求想x,y,z是同维数的矩阵

%使用ezsurf和ezmesh时,曲面函数必须能写成显函数的形式,如Z?sin(xy)/(xy) %可以使用@(x,y)+函数表达式 定义匿名函数,如z?@(x,y)sin(x*y)/(x*y) %surf(x,y,z,x); %设置图形颜色变化方向为沿x轴,此项可省,一般不要求。

图形属性:

axis属性

Axis tight %将坐标轴减小到可能的最小尺寸

Axis equal %使x,y轴的刻度设置相同

Axis square%使图形长宽相同

Axis off%不显示坐标轴

Axis([x0 x1 y0 y1 z0 z1]);%手动改变轴的范围

View(n,m) %设定图形观察视角,n为在水平方向测量的角度,m为从水平面向上测量的仰俯角。

Subplot(n,m,x) %将图像窗口分为nxm个子窗口,当前指的是第x个,按行数。当要对第y个图做一定的设置时,先输入命令subplot(n,m,y),然后再输入要做的设置命令。

Legend(‘xxx’) %给图形设置图标,也可指定图标的位置,默认为右上角。 Text(x,y,‘xxx’) %给图像添加注释内容,注释位于图形中(x,y)处。 Gtext(‘xxx’); %给图像添加注释,位置随意,将十字光标点在哪儿就放哪儿。 delete(findobj('type','text'))%删除通过gtext()命令添加的注释内容

Close all%关闭所有图像窗口

Title(’xxx‘)%给图形添加标题

Material属性,设置曲面的材料属性,值有dull,shiny,metallic,该命令可结合用在surf,mesh,pcolor,fill,fill3等函数中。

Plotyy(x,y1,x,y2,’plot’)%在同一个图中画出两个图形,公用一个横轴,纵轴不同,分列两边,且纵轴刻度设置可不同,自动的。

Semilogx 和semilogy 表示横轴和纵轴采用对数坐标画出x-y的图形,用法为semilogx(x,y)和semilogy(x,y).

Loglog(x,y)%横纵轴均采用对数形式画出x-y图形

Grid on %打开网格,系统默认为grid off ,即关闭网格。

A=Complex(x,y) %产生复数A=x+yi

Real(A)=x,imag(A)=y.

Fill(x,y,n) %产生一个有x,y坐标定义的填充颜色的图形,填充颜色根据n对色图进行索引确定。

light('Color',选项一,'Style',选项二,'Position',选项三),选项一为表示光的颜色的矩阵,取RGB三元组或相应的颜色字符。选项二可取为'infinite'和'local'两个值,分别表示无穷远光和近光。选项三为三维坐标点组成的向量形式[x,y,z]。对远光,它表示光穿过该点射向原点;对于近光,它表示光源所在位置。假如函数不包含任何参数,则采用缺省设置:白光、无穷远光、穿过(1,0,1)射向坐标原点。一般后两个参数可省,默认。--例:

[x,y,z]=peaks;

surf(x,y,z);

shading interp;

light('Color',[1 0 1],'Style','local','Position',[-4,-4,10]); %此命令表示在点[-4,-4,10]处有一处品红色光源

例1.画出椭圆柱面图:

?x?3cos?,??y?2sin?,

??z?t,t?R,

编写的matlab程序如下:

x?@(a,t)3*cos(a);

y?@(a,t)2*sin(a);

z?@(a,t)t;

ezmesh(x,y,z)%定义匿名函数%因为没能写成显函数的形式,所以调用命令函数ezmesh时使用格式ezmesh(x,y,z),当能写成显函数时可以直接调用格式ezmesh(z)。

例2.绘制二元函数三维表面图:

z?

程序如下: sin(xy)xy

[x,y]?meshgrid([?3:0.2:3]);

z?@(x,y)sin(x*y)/(x*y);

ezmesh(z)

Meshgrid的用法举例:两种情况

%产生所定范围内的二维点阵 %或用ezsurf(z),所画图像颜色效果不同

3)积分命令:

a).Int---符号积分法

应用: int(s)符号表达式s的不定积分.

int(s,v)符号表达式s关于变量v的不定积分.

int(s,a,b)符号表达式s的定积分, a,b分别为上﹑下限.

int(s,v,a,b)符号表达式s关于变量v从 a到b的定积分.

当int求不出符号解,会自动转求数值解.

注:使用符号积分时需结合使用syms--符号定义命令,例如声明两个符号变量x,y,matlab语句格式为:Syms x,y;

例3.求函数不定积分:sin(x)?cos(2*x)?exp(x.^2)

Matlab程序为:

symsx;

A?sin(x)?cos(2*x)?exp(x.^2);%函数A

%对函数A求关于x的导数并赋给z z?int(A)

b).一重数值积分命令:quad(f,a,b)、quadl(f,a,b)

其中f为积分函数,a、b为积分上下限。

例4.求数值积分?1?012x?3x2

Matlab程序如下:

f?@(x)(2*x?3)./(1?x.^2);

I?quad(f,0,1)或用I=quadl(f,0,1),结果的精度不同 c).二重数值积分命令:dblquad(f,a,b,c,d)

其中a,b为外重积分限,c,d为内重积分限,f为积分函数。

d).三重数值积分命令:triplequad(f,a,b,c,d,e,f)

其中a,b为外重积分限,c,d为中间重积分限,e,f为内重积分限,f为积分函数。

4).几个特殊矩阵:

eye(n):n阶单位矩阵;

Ones(n):n阶1矩阵;

Zeros(n):n阶0矩阵;

5).矩阵运算:

乘法:格式 a*b; %注意和数组矩阵乘法区别a.*b;注,乘以逆和标准除法等同右乘,后除可抵消对矩阵做的左乘效果。

求逆:格式 inv(a)和运算符向后除\,例inv(a)*c<=>a\c;注,c/a表示(

指数运算:k-kC'\B)' 'A和A,其中k为正数,分别表示A连乘K次,和???

rot90(A,n):将矩阵A逆时针旋转n个90度

tril(A):保留A的下三角并将上三角填充为0.

unit8,unit16(A):将A中数据转化为固定位数的无符号整数类型。

6)几个命令函数:

find():查找命令;

例:a(find(a==0))=inf ,表示把a矩阵中的0元素全部替换为无穷。

Min():查找最小命令;

Numel(a),计算矩阵a的元素个数;

[y n]=Max(x,[],2),查找最大元素及其位置,返回值y为最大值,n为对应位置

7)Matlab与记事本的数据交互:

A).matlab读入记事本文件中的数据:

如果记事本文件*.txt中内容全部为数值是,可直接调用命令A=load(‘*.txt’),由此matlab中会生成一个数值矩阵A。

如果文件中不全为数值,则不能用load命令,应该用[name,type,value]textread(‘*.txt’,‘%s %n %f’,2),此格式代表文件中第一列为字符串,第二列为整数,第三列为浮点数,读取命令只读取文件中的前两行,生成三个列矩阵name type value,具体情况具体分析。

注:要求所读取的txt文件的位置必须在matlab中“当前目录”中包含,如当前目录为:D:\temp\work,则txt文件必须保存在该路径下,否则命令执行出错。

Fscanf():更强大的一个读取命令。

B).将matlab数据写入记事本文件中:

如果只想保存数值数据,则可调用save命令,格式为:save filename a b ...; 代表把变量a ,b ...等值存入名为filename的.mat格式的文件中,该文件的路径为“当前目录”。且该文件只能用matlab打开,其他软件无法打开。

如果想把各种数据保存为.txt文件,则应该使用fprintf命令,格式为: Fid=fopen(‘file.txt’,wt); %打开一个文件,并返回一个指标fid

Fprintf(fid,’数据表1\n’);%可省

Name=’sally’;types=1;x=3;y=4;%赋值一次

Fprintf(fid,’%s type%n %f %f’,name,types,x,y); %写入一次

Name=’jim’;types=2;x=1;y=3; %第二次赋值

Fprintf(fid,’%s type%n %f %f’,name,types,x,y);%第二次写入

Fclose(fid); %关闭文件

则生成一个txt文件,内容为:

数据表1

Sally 3 4

Jim 1 3

8)数据拟合:

A).多项式拟合:

指令拟合:p=polyfit(x,y,n);%返回系数矩阵p;

Yi=Polyval(p,xi); %计算多项式的拟合函数值

用命令poly2sym(p)输出拟合函数表达式

图形窗口拟合:先画出散点图,plot(x,y,’r*’);然后在图形窗口上点击Tools下的basic fitting,打开拟合对话框进行操作。

B).指定函数类型拟合:

假设根据散点图知道拟合函数类型为f(x)形式的,则可利用.m进行拟合。

编写m文件:

篇三:Matlab 学习笔记

Matlab 学习笔记

%matlab是区分大小写的,M文件不要用纯数字作为名称

%修改后的界面窗口也是可以恢复的。恢复的操作步骤也是很简单的:打开MATLAB,依次点击:“Desktop”---“Desktop Layout”---“Default”,就可以恢复MATLAB初始界面窗口。

%自定义shortcuts的添加方法:在记事本上写下经常用到的程序代码,如: clc

clear all

close all

将上面写好的代码选中拖入到matlab主界面的shortcuts tools工具栏上,会出现以下界面:

给创建的shortcuts起个名字clearen,这样每次执行上面指令只需单击创建的shortcuts名。

addpath('E:\matlab实验程序') %添加路径:addpath('当前路径中的文件夹名1','当前路径下的文件夹名2','当前路径中的文件夹名n');【即可一次性添加多个路径】

rmpath ('E:\matlab实验程序') %去除路径:rmpath('当前路径中的文件夹名1','当前路径下的文件夹名2','当前路径中的文件夹名n');【即可一次性去除多个路径】

path%查看路径

%输入edit命令直接调出M文件编辑器,M文件运行直接按

%M文件写好之后,可直接发布成网页:在Editor窗口File菜单中选择“Publish 文件名.m”

%输入guide命令,可打开图形用户界面GUI文件(*.fig)或者创建新的GUI文件(*.fig)

%键盘向上向下键 寻找历史命令,shift键可以选择多个历史命令,双击运行

what%列出当前路径的所有m文件

%figure表示重新打开一个窗口画plot,否则覆盖画

%hold on、hold off用于保存绘制句柄,用于在同一张图上绘制多条曲线的情形

a=2; %分号 ; 表示不输出结果

p=-1:0.1:1; %-1为起始值,1为终止值,0.1为增量

p=[1 2 3 ...

4 5 6]%...为换行连接符,...不能放在等号后面使用,不能放在变量名中间使用,起作用时默认显蓝色

clc %清屏

clear %清除workspace中的变量

clear all%是清除所有工作空间中的变量

close all %是关闭所有窗口(程序运行产生的,不包括命令窗,editor窗和帮助窗)

exit %退出matlab

%【Esc】键:命令窗口中,可清除当前输入行

%【Tab】键:在command窗口,输入一个命令的前几个字符,然后按tab键,会弹出前面含这几个字符的所有命令,找到你要的命令,回车,就可以自动完成。

%help+函数名或help+函数类名 精确查询

%doc+函数名 打开帮助窗口, 精确查询

%lookfor+关键字 这个是matlab中的谷歌,模糊查询

%【Ctrl+C】(或【Ctrl+Break】):在matlab程序运行过程中,可能由于程序编写的失误,导致程序不停的运行,在命令窗口输入“Ctrl+C”可以将运行的程序停下来,而不需要将整个Matlab程序关掉。不过进行此操作的前提是能够激活切换到命令窗口才行

%【Ctrl+R】:editor窗口中,添加注释(对多行有效)

%【Ctrl+T】:editor窗口中,去掉注释(对多行有效)

%【Ctrl+[】:editor窗口中,减少缩进,对多行有效

%【Ctrl+]】或【Tab】:editor窗口中,增加缩进,对多行有效

%【Ctrl+I】:editor窗口中,自动缩进,对多行有效

%【F12】:editor窗口中,设置或取消程序断点

plot(P,T,’+’) %绘图 P横坐标,T纵坐标,+为标记

title('test');%绘图显示图像标题为 test

xlabel('input vector'); %绘图显示x轴标识为 input vector

ylabel('output vector'); %绘图显示y轴标识为 output vector

subplot(2,2,1); imshow(a1)%表示画2行,画2列,将a1画在第1幅图

pause %不加参数,直接用pause的话,就是程序暂停,直至用户按任意一个按键 pause(1.5) %加参数,表示程序暂停1.5秒后继续执行

echo off%神经网络训练时不显示每一步的梯度和误差性能

[w1,b1,w2,b2]=initff(P,S1,’tansig’,T,’purelin’); %利用initff函数对BP神经网络权值及阈值进行赋值,其格式为[w1,b1,w2,b2]=initff(p,s1,f1,s2,f2); p为输入矢量,s1,s2表示神经元数,f1,f2为变换函数,s2可以变为目标矢量T,输出神经元数就为T的行数

%单层感知器

net=newp(minmax(P),1); %创建单层感知器,其中P为输入,神经元个数为1 net=train(net,P,T); %训练感知器网络

Y=sim(net,P); %模拟感知器网络

net.trainParam.epochs=20; %设置网络训练次数为20次

a = imread('img\car.jpg');%读取图片

imshow('car.jpg') %图像显示,或imshow(a),其中a为图像变量

imwrite(bw,'bwimg.jpg');%保存图像bw到当前文件夹下,保存为bwimg.jpg

inf=imfinfo('car.jpg') %图像信息查询,显示图像的格式,长,宽等信息

ndims(i)%判断数据i的维数,此函授可以判断图像对象的维数

X=rgb2gray(a); imshow(X)%彩色图像转灰度图像

X=grayslice(I,64) ; imshow(X,hot(64))%图像类型转换函数,将灰度图像转为索引色图像:索引颜色图像最多只能合用256种颜色,当图像模式转为索引颜色时,会构建一个索引色彩表(CLUT),用来存放索引图像中的颜色。如果原图像中的颜色超出色彩表中的颜色范围,会自动选取色彩表中最相近的颜色或使用已有的颜色模拟该种颜色。索引颜色模式可以减小文件大小,同时保持视觉上的品质基本不变。(将灰度图像还原为彩色图像)

X=im2bw(a); %将灰度图像转二值图像

imhist(i); %直方图:imhist函数用于数字图像的直方图显示,图像i不能为彩色,即i为二维灰度图像,不能为三维彩色图像。

whos(i) %显示变量i的名称、大小、类型等信息

whos%列出当前 workspace 里的变量名、大小、数据类型等信息

class(i) %判断变量i的数据类型

b=uint8(i); %i表示数值,一般数值默认采取double存储,double型表示范围[0,1],

matlab学习日记

可以将i转换为uint8型,范围[0,255]

round(0.789*255)%round为取整函数, 为最近的整数

I2=im2double(I1);%将图象数组转换成double精度类型。MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double,在MATLAB中,数值一般都采用double型(64位)存储和运算,如果不转换,在对uint8进行加减时会产生溢出,图像数据在进行计算前要转化为double类型的,这样可以保证图像数据运算的精度。uint8表示范围[0,255],double型表示范围[0,1]

I=imread('a.jpg');%提取图像, 进行编译检测的图像必须为2维的 BW1=edge(I,'sobel');%用SOBEL算子进行边缘检测

BW2=edge(I,'roberts');%用Roberts算子进行边缘检测

BW3=edge(I,'prewitt');%用prewitt算子进行边缘检测

BW4=edge(I,'log'); %用log算子进行边缘检测

BW5=edge(I,'canny'); %用canny算子进行边缘检测

h=fspecial('gaussian',5);

I2=filter2(h,I,'same');%进行高斯滤波

BW6=edge(I2,’canny’); %此为用高斯滤波后Canny算子边缘检测结果 subplot(2,3,1), imshow(BW1);title(‘sobel edge check’);

subplot(2,3,2), imshow(BW2);title(‘sobel edge check’);

subplot(2,3,3), imshow(BW3);title(‘prewitt edge check’);

subplot(2,3,4), imshow(BW4);title(‘log edge check’);

subplot(2,3,5), imshow(BW5);title(‘canny edge check’);

subplot(2,3,6), imshow(BW6);title(‘gasussian&canny edge check’);

h1=fspecial('gaussian',4,0.3)

I2=filter2(h1,I1,'same') %进行高斯滤波

h2=fspecial('sobel')

I3=filter2(h2,I1,'same') %进行sobel滤波

h3=fspecial('prewitt')

I4=filter2(h3,I1,'same') %进行prewitt滤波

h4=fspecial('laplacian',0.5);

I5=filter2(h4,I1,'same'); %进行拉普拉斯滤波

h5=fspecial('log',4,0.3);

I6=filter2(h5,I1,'same'); %进行高斯拉普拉斯滤波

h6=fspecial('average');

I7=filter2(h6,I1,'same'); %'进行均值滤波

h7=fspecial('unsharp',0.3);

I8=filter2(h7,I1,'same'); %进行模糊滤波

h8=[0 -1 0;-1 5 -1;0 -1 0];

I9=filter2(h8,I1,'same'); %进行高通高斯滤波

h9=I1;

I10=medfilt2(h9); %进行中值滤波

高中作文