matlab经典源程序带有注释详细经典.docx
- 文档编号:10757180
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:36
- 大小:22.91KB
matlab经典源程序带有注释详细经典.docx
《matlab经典源程序带有注释详细经典.docx》由会员分享,可在线阅读,更多相关《matlab经典源程序带有注释详细经典.docx(36页珍藏版)》请在冰豆网上搜索。
matlab经典源程序带有注释详细经典
2.1set与get函数
set(edit_handle,'String','myvalue!
');%String为Edit控件的属性
%%
%2.1-1
%创建figure对象
hfig=figure
(1);
%创建坐标轴对象,指定其父对象为figure1
haxes1=axes('parent',hfig);
prop.Color='b';
prop.FontSize=12;
set(haxes1,prop);
%%
%2.1-2
%创建界面窗口
hfig=figure
(1);
%查询其Units属性值
get(hfig,'units')
%其Units属性值为pixels(像素)
%ans=
%pixels
%%
%2.1-3
%figure的Pointer属性标识了鼠标指针的形状
set(gcf,'pointer');
%返回值为:
[crosshair|fullcrosshair|{arrow}|ibeam|watch|topl|topr|botl|botr|left|top|right|bottom|circle|cross|fleur|custom|hand]
%%
%2.1-4
%首先取得标识电脑屏幕大小的度量单位
get(0,'units')
%ans=
%pixels
%取得屏幕的尺寸
get(0,'screensize')
%ans=
%111280800
2.2callback函数
%定义M文件的主函数名称为DefineCallback,不带输入和输出参数
functionDefineCallback
%创建界面窗口
hFig=figure('units','normalize',...
'position',[0.40.40.30.2]);
%在窗口中创建按钮控件,并定义其Callback属性
uicontrol('parent',hFig,...
'style','pushbutton',...
'String','ExecuteCallback',...
'units','normalize',...
'position',[0.40.40.30.2],...
'callback',['figure;',...
'x=0:
pi/20:
2*pi;',...
'y=sin(x);',...
'plot(x,y);']);
%定义M文件的主函数名称为DefineCallback,不带输入和输出参数
functionDefineCallback
%创建界面窗口
hFig=figure('units','normalize',...
'position',[0.40.40.30.2]);
%在窗口中创建按钮控件
hpush=uicontrol('parent',hFig,...
'style','pushbutton',...
'String','ExecuteCallback',...
'units','normalize',...
'position',[0.40.40.30.2]);
%设置按钮的Callback属性
set(hpush,'callback',@mycallback);
%定义回调函数为子函数
functionmycallback(hobj,event)
figure;
x=0:
pi/20:
2*pi;
y=sin(x);
plot(x,y);
2.3元胞数组
a={'hello'[123;456];1{'1''2'}}
a=
'hello'[2x3double]
[1]{1x2cell}
%示例2:
将元胞数组a中的元胞逐一赋值
>>a{1,1}='hello';a{1,2}=[123;456];a{2,1}=1;a{2,2}={'1''2'};
>>a
a=
'hello'[2x3double]
[1]{1x2cell}
%示例3:
使用cell函数来创建元胞数组
%生成2x3的元素为空数组的元胞数组
>>a=cell(2,3)
a=
[][][]
[][][]
%示例4:
判断数组A是否为元胞数组
%定义一个元胞数组A
>>A={123};
%判断A是否为元胞数组,如果为元胞数组,则函数
>>tf=iscell(A)
tf=
1
%示例5:
显示元胞数组C中的内容
>>clear
>>C={'Smith'[12;34][12]};
%直接显示元胞数组C中的内容
>>celldisp(C)
C{1}=
Smith
C{2}=
12
34
C{3}=
12
%显示元胞数组C中的内容,数组的名称用cellcontent代替
>>celldisp(C,'cellcontent')
cellcontent{1}=
Smith
cellcontent{2}=
12
34
cellcontent{3}=
12
%示例6:
将字符数组转换为元胞数组
>>S=['abc';'defg';'him'];
>>cellstr(S)
ans=
'abc'%原先abc后面的空格被清除
'defg'
'him'%i和m之间的空格仍然保留
%示例7:
显示元胞数组S中的内容(包括空格和字符)
>>S={'abc','defg','him'};
>>cellplot(S)
%示例8:
将数字数组A按行或按列转换为元胞数组
%A是4x3的数组
>>A=[123;456;789;101112];
%把A的每一列转换为一个元胞,得到的C是1×3的元胞数组
>>C=num2cell(A,1)
C=
[4x1double][4x1double][4x1double]
%把A的每一行转换为一个元胞,得到的C是4×1的元胞数组
>>C=num2cell(A,2)
C=
[1x3double]
[1x3double]
[1x3double]
[1x3double]
2.4结构数组
%示例1:
使用直接法来创建结构数组
>>A
(1).name='Pat';
A
(1).number=176554;
A
(2).name='Tony';
A
(2).number=901325;
>>A
A=
1x2structarraywithfields:
name
number
%示例2:
利用struct函数来创建结构数组
>>A
(1)=struct('name','Pat','number',176554);
A
(2)=struct('name','Tony','number',901325);
>>A
A=
1x2structarraywithfields:
name
number
%示例3:
使用deal函数来得到结构体中各结构域的值
%定义结构数组A
>>A.name='Pat';A.number=176554;A
(2).name='Tony';A
(2).number=901325;
%得到结构数组中所有name结构域的数据
>>[name1,name2]=deal(A(:
).name)
name1=
Pat
name2=
Tony
%示例4:
使用getfield函数来取得结构体中结构域的值
%定义mystr结构数组
>>mystr(1,1).name='alice';mystr(1,1).ID=0;mystr(2,1).name='gertrude';
mystr(2,1).ID=1;
%取得mystr(2,1)的结构域name的值
>>f=getfield(mystr,{2,1},'name')
f=
gertrude
%示例5:
删除结构数组中的指定结构域
%定义结构数组s
>>s.field1=[123];s.field2='string';s.field3={123;456};
%删除结构域field1
>>s=rmfield(s,'field1')
s=
field2:
'string'
field3:
{2x3cell}
%删除结构域'field2','field3'
>>s=rmfield(s,{'field2','field3'})
s=
field1:
[123]
%示例6:
%定义结构数组s
>>s.field1=[123];s.field2='string';s.field3={123;456};
>>s
s=
field1:
[123]
field2:
'string'
field3:
{2x3cell}
%将结构数组转换为元胞数组
>>c=struct2cell(s)
c=
[1x3double]
'string'
{2x3cell}
%示例7:
>>c={'birch','betula',65;'maple','acer',50}
c=
'birch''betula'[65]
'maple''acer'[50]
>>fields={'name','genus','height'};%fields包含struct中的结构域名
>>s=cell2struct(c,fields,2);%dim=2表示把c中的各行转换为struct数组
s=
2x1structarraywithfields:
name
genus
height
>>s
(1)
ans=
name:
'birch'
genus:
'betula'
height:
65
>>s
(2)
ans=
name:
'maple'
genus:
'acer'
height:
50
>>fields={'field1','field2'};
>>s=cell2struct(c,fields,1);%dim=1表示把c中的各列转换为struct数组
>>s
(1)
ans=
field1:
'birch'
field2:
'maple'
>>s
(2)
ans=
field1:
'betula'
field2:
'acer'
>>s(3)
ans=
field1:
65
field2:
50
2.5矩阵操作
%示例1:
find函数的使用方法。
%定义矩阵A
>>A=[1234;5678];
%查找A中所有大于3的元素,返回元素的线性索引
>>ind=find(A>3)
ind=
2
4
6
7
8
%查找A中所有大于3的元素,返回元素的行下标和列下标
>>[mn]=find(A>3)
m=
2
2
2
1
2
n=
1
2
3
4
4
%示例2:
矩阵元素的线性索引与行列下标之间的转换
>>A=[1234;5678];
>>ind=find(A>3);
>>[mn]=find(A>3);
>>[IJ]=ind2sub(size(A),ind)
>>IND=sub2ind(size(A),I,J)
I=
2
2
2
1
2
J=
1
2
3
4
4
IND=
2
4
6
7
8
%示例3:
删除矩阵中的指定元素
>>A=[1234;5678];
%删除A的第1行的数据
>>A(1,:
)=[]
A=
5678
>>A=[1234;5678];
%删除A的第1列的数据
>>A(:
1)=[]
A=
234
678
%示例4:
查询矩阵的大小对于
%由rand命令生成的一个4×3×2的三维矩阵
>>A=rand(4,3,2);
%得到矩阵的大小信息
>>num=size(A)
num=
432
>>num=length(A)
num=
4
>>num=size(A,1)
num=
4
>>num=size(A,2)
num=
3
>>num=size(A,3)
num=
2
%示例5:
求矩阵的最大和最小值
>>clear
>>a=[23;36;49]
a=
23
36
49
>>b=[14;45;58]
b=
14
45
58
>>max(a)
ans=
49
>>min(a)
ans=
23
>>max(a,b)
ans=
24
46
59
>>max(a,[],2)
ans=
3
6
9
>>max(a,[],1)
ans=
49
2.6字符串操作
%示例1:
创建字符串string
%创建普通字符串
>>string='TostudyMATLAB!
'
string=
TostudyMATLAB!
%创建带单引号的字符串,在出现单引号的地方用两个单引号代替(’’)
>>string='We''regoingtostudyMATLAB!
'
string=
We'regoingtostudyMATLAB!
>>
%示例2:
将上述string字符串中的study替换为learn
%创建字符串string
>>string='We''regoingtostudyMATLAB!
'
string=
We'regoingtostudyMATLAB!
%将其中的study替换为learn
>>string(16:
20)='learn'
string=
We'regoingtolearnMATLAB!
%示例3:
取出string中的子串learn
>>subString=string(16:
20)
subString=
learn
%示例4:
将上述string字符串倒排
>>newString=string(end:
-1:
1)
newString=
!
BALTAMnraelotgnioger'eW
%示例5:
计算字符串中字符的个数
>>[rc]=size(string)
r=
1
c=
28
%示例6:
字符串的ASCII码值与字符串的转换
%取得ASCII码值
>>ascii_string=double(string)
ascii_string=
Columns1through21
87101391141013210311110511010332116111321081019711411032
Columns22through28
77658476656633
%转换为字符串
>>string=char(ascii_string)
string=
We'regoingtolearnMATLAB!
%示例7:
字符串的比较和连接
>>str1='abcdefg';str2='hijklmn';str3='abckjhl';str4='ABCkjhl';
%连接str1和str2为行向量
>>newstr1=strcat(str1,str2)
newstr1=
abcdefghijklmn
%连接str1、str2和str3为列向量
>>newstr2=strvcat(str1,str2,str3)
newstr2=
abcdefg
hijklmn
abckjhl
%在newstr2中查找以’abc’开头的各行
>>strmatch('abc',newstr2)
ans=
1
3
%比较字符串str1和str4的前三个字符,区分字符的大小写
>>strncmp(str1,str4,3)
ans=
0
%比较字符串str1和str4的前三个字符,不区分字符的大小写
>>strncmpi(str1,str4,3)
ans=
1
%示例8:
数字数组和字符串的转换
%创建数字数组A
>>A=[123;456;788910]
A=
123
456
788910
%将数字数组A转换为字符数组
>>str=num2str(A)
str=
123
456
788910
>>whosstr
NameSizeBytesClassAttributes
str3x1060char
%将字符数组str转换为数字数组
>>num=str2num(str)
num=
123
456
788910
>>whosnum
NameSizeBytesClassAttributes
num3x372double
%将数字数组A转换为字符串(行向量),向量中的元素包括“[”、“]”、“;”等字符。
>>str2=mat2str(A)
str2=
[123;456;788910]
>>whosstr2
NameSizeBytesClassAttributes
str21x2244char
%示例9:
%字符串中字符的大小写的转换
>>str='matlab'
str=
matlab
>>str1=upper(str)
str1=
MATLAB
>>str=lower(str1)
str=
matlab
%查找在str1中出现str2的位置
>>str1='abcdefg';str2='cdf';
>>findstr(str1,str2)
ans=
[]
>>str1='abcdefg';str2='cd';
>>findstr(str1,str2)
ans=
3
2.7判断函数使用大全
%%
%示例1
h=gcf;
value=rand(3);
setappdata(h,'myappdata',value);
tf=isappdata(h,'myappdata')
%%
%示例2:
A{1,1}=[143;058;729];
A{1,2}='AnneSmith';
A{2,1}=3+7i;
A{2,2}=-pi:
pi/10:
pi;
iscell(A)
%%
%示例3:
A{1,1}='ThomasLee';
A{1,2}='Marketing';
A{2,1}='AllisonJones';
A{2,2}='Development';
iscellstr(A)
%%
%示例4:
%双精度数字数组
C{1,1}=magic(3);
%字符数组
C{1,2}='JohnDoe';
%复数数组
C{1,3}=2+4i;
%>>C
%C=
%[3x3double]'JohnDoe'[2.0000+4.0000i]
%ischar函数返回值表明只有C{1,2}是字符数组
fork=1:
3
x(k)=ischar(C{1,k});
end
%x
%x=
%010
%%
%示例5:
tf=isdir('D:
\work')
%%
%示例6
A=rand(2,3);
B=[];
tf1=isempty(A)
tf2=isempty(B)
%%
%示例7
A=[123;456];
B=[789;101112];
tf1=isequal(A,B);
%%
%示例8
patient.name='JohnDoe';
patient.billing=127.00;
isfield(patient,'billing')
%%
%示例9
a=[-2-1012];
isfinite(1./a)
isfinite(0./a)
%%
%示例10
h=gcf;
tf1=ishandle(h)
closeall
tf2=ishandle(h)
%%
%示例11
globalA
A=100;
isglobal(A)
%%
%示例12
patient.name='JohnDoe';
patient.billing=127.00;
isstruct(patient)
%%
%示例13
C{1,1}=pi;
C{1,2}='JohnDoe';
tf1=isnumeric(C{1,1})
tf2=isnumeric({1,2})
%%
%示例14
C{1,1}=ispc;
C{1,2}='JohnDoe';
tf1=islogical(C{1,1})
tf2=islogical({1,2})
%%
%示例15
set=[02468101214161820];
A=[1;2;3;4;5];
ismember(A,set)
%%
%示例16
a=[-2-1012];
isnan(0./a)
%%
%示例17
x=magic(3);
y=complex(x);
isreal(x)
isreal(y)
%%
%示例18
A=rand(5);
isscalar(A)
isscalar(A(3,2))
%%
%示例19
A=[5123339789095107128131];
issorted(A)
%%
%示例20
s1=serial('COM1');
s2=serial('COM1');
delete(s2)
sarray=[s1s2];
isvalid(sarray)
2.11打开外部程序
%示例1:
opencopyfile.m
%示例2:
open('D:
\works\data.mat')
%示例3
openmyfile
%示例4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 经典 源程序 带有 注释 详细