文章目录
- 数据类型
- 数值类型
- 逻辑类型
- 字符和字符串
- 函数句柄
- 单元数组类型
- 结构体类型
- 运算符
- 日期和时间
- 常量和变量
数据类型
%% 1.数据类型
%15种数据
%8种整型:int8,int16,int32,int64,uint8,uint16,uint32,uint64(分别占1、2、4、8字节)
%单精度浮点型single,双精度浮点型double(默认),(分别占4,8字节)
%逻辑型logical,字符串型char
%单元数组型cell,结构体型struct,函数句柄型function_handle
a1 = int8(6);
a2 = int16(-20);
a3 = int32(100);
a4 = int64(200);
b1 = single(3.5);
b2 = 12;
c1 = true;
c2{1,1} = 100;
c3 = 'hello';
c4.name = 'yang';
d = @cos;
数值类型
%% 1.1数值类型
% 1.1.1整数
%(1)类型转换:
clear
a = 20
b1=int8(a)
b2=int16(a)
c='hello'
int8(c)
%(2)取整函数
% round 非符号部分四舍五入, fix 向0取整, floor 下取整, ceil 上取整
clear
a1=round(-1.2)
b1=fix(-1.2)
b2=fix(-1.9)
b3=fix(1.9)
c1=floor(-1.2)
d1=ceil(-1.2)
% 1.1.2浮点数
clc,clear
[realmin('single'),realmax('single')]
[realmin('double'),realmax('double')]
% 1.1.3复数
%(1)创建
clc,clear
a1=3+4i
a2=3+4j
a3=complex(3,4)
%(2)常用函数
% complex(a,b) 创建复数,real(z) 返回实部,imag(z) 返回虚部
% abs(z) 求模,angle(z) 求角度, conj(z) 求共轭复数
clc,clear
z1=3+4i
[real(z1),imag(z1)]
[abs(z1),angle(z1)]
z2=conj(z1)
z3=complex(1:3,3:5)
real(z3)
imag(z3)
% 1.1.4数据显示格式format()
%format short 或 format('short') 默认,保留小数点后4位
%format long 或 format('long') 有效数字16位
%format long e 有效数字16位加3位指数
%format short e 有效数字5位加3位小数
%format bank 或 format('bank') 保留两位小数位
%format + 或 format('+') 只给出正、负
%format rational 或 format('rational') 以分数形式表示
%format hex 或 format('hex') 16进制
%format long g 15位有效数
%format short g 5位有效数
clc,clear
format short
a = 12.345678
format long
a
format long e
a
format short e
a
format bank
a
format +
a
format rational
a
format hex
a
format short
逻辑类型
%% 1.2 逻辑类型
% 1 true 逻辑真, 0 false 逻辑假
clc,clear
a1=true
a2=false
a3=true(3,4)
a4=false(3)
% logical()可将非0数值转换为真,数值0转换为假(均占1字节)
clc,clear
a=3
logical(a)
b=0
logical(b)
c=[1.3 -3 0;2 0 4;0.001 9 1]
logical(c)
字符和字符串
%% 1.3 字符和字符串
% 字符和字符串不进行区分均由''括起来,每个字符占两个存储空间
clc,clear
a='My name is 杨'
b=char([65 66 67 68])
c=int8('hello')
d='杨'
函数句柄
%% 1.4 函数句柄
% 创建:@ 函数名/命令
clc,clear
a=@cos
a(10)
% 函数句柄常用函数
% fun2str(fhandle) 函数句柄转字符串
% str2fun(str) 字符串转函数句柄
% functions(fhandle) 返回包含函数信息的结构体变量
% isa(a,'function_handle') 判断是否为函数句柄
% isequal(fhandle1,fhandle2) 检测两个函数句柄是否对应同一函数
clc,clear
f1=@cos
t=0:pi/5:pi
f1(t)
f2=@complex
f2(3,4)
clc,clear
f1=@char
s1=func2str(f1)
f2=str2func(s1)
functions(f1)
isa(f1,'function_handle')
isequal(f1,f2)
单元数组类型
%% 1.5 单元数组类型
% 1.建立:{},cell(),num2cell()
% 判断iscell()
clc,clear
c1={'中国','China';[1 2 3 4 5],100} %{}创建
c1{1,1}
c1{2,1}
c1{2,2}=[]
c2=cell(2,3) %cell()创建
c2{1,1}=[1:3;3:5]
c2{2,2}='China'
c2{2,3}='Rosy'
c2{2,1}=100
a=[2.3 4.5 -1;2 3 4]
iscell(a)
c3=num2cell(a) %num2cell()矩阵转单元数组
iscell(c3)
% 2.显示
clc,clear
c={eye(2),'China';[1:4],100}
celldisp(c) % cellisp()
celldisp(c,'mycell')
out=cellplot(c,'legend') % cellplot() 以彩色图形显示
% 3.添加删除元素
clc,clear
c={'中国','China';[1:4],100}
c{2,4}=100
c(1,:) %第一行元素
c(:,3)=[] %删除第三列
d={'北京','Beijing';[],3}
e=[c,d] %单元数组合并
e(2,:)=[] %删除第二行
% 4. cell2struct()
clc,clear
c={'Dr.Yang',1.80,20200322,[80,90,96]}
fields={'name','height','num','score'}
s=cell2struct(c,fields,2)
结构体类型
%% 1.6 结构体类型
% sttuct() 产生结构体变量
% getfield() 获得结构体成员变量的值
% setfield() 给结构体的成员变量设置新值
% rmfield() 删除结构体中的成员变量
% isstruct() 判断是否为结构体变量
% isfield() 判断是否为结构体变量的成员变量
% fieldnames() 获得结构体成员变量名字
% substruct() 子结构体
% orderfields(S) 按照成员变量的字幕顺序排序
% struct2cell() 结构体转元胞数组
clc,clear
stu(1).name='yang' %直接输入建立结构体
stu(1).age=21
stu(1).gender='Male'
stu(2)=struct('name',{'yung'},'age',{22},'gender',{'Female'}) %struct()创建
getfield(stu(1),'name') %获取成员变量值
setfield(stu(1),'name','ya') %修改成员变量值(不存在时,加入新成员变量)
setfield(stu(1),'newfield',1)
s1 = rmfield(stu,'gender') %删除一个成员变量
s2 = rmfield(stu,{'age','gender'}) %删除多个成员变量
isstruct(stu) %判断是否为结构体
isfield(stu,'name') %判断是否为成员变量
isfield(stu,{'name','age','Age'})
fieldnames(stu) %返回结构体成员变量数组
orderfields(stu) %按字符顺序将结构体变量的成员变量排序
c=struct2cell(stu) %结构体变量转元胞数组
运算符
%% 2 运算符
% 2.1算术运算:+, -, *, /, \, ^, ' 前面加 . 以元素为基本单位运算,不加以矩阵为单位运算
% 2.2关系运算:<, <=, >, >=, ==, ~=
% 函数: lt, le, gt, ge, eq, ne (注意判断浮点数相等,差的绝对值小于一个特别小的数)
% 2.3逻辑运算:逐个元素的逻辑运算、
% (1)逐个元素的逻辑运算
% & and, | or, ~ not, xor
clc,clear
A=rand(3,4)
B=A>0.6
C=A<0.4
d1=B&C
d2=B|C
d3=~B
d4=xor(B,C)
% (2)快速逻辑运算符:&&,||
% && 第一个为假时,直接返回假
% || 第一个为真时,直接返回真
% (3)逐位逻辑运算
% bitand(a,b) bitor(a,b) bitcmp(a,b) bitxor(a,b)
% 对二进制数逐位逻辑计算,并将结果转换为十进制数
clc,clear
a=20
b=23
c1=dec2bin(a)
c2=dec2bin(b)
d1=bitand(a,b)
d2=dec2bin(bitand(a,b))
d3=dec2bin(bitor(a,b))
d4=dec2bin(bitxor(a,b))
d5=dec2bin(bitcmp(a,'uint8'))
% 2.4 运算符的优先级
% 相同优先级,从左向右运算
% ()
% ' ^ .^
% + - ~ (一元加减)
% * .* / ./ \ .\
% + -
% :
% 关系运算符
% &
% |
% &&
% ||
日期和时间
%% 3 日期和时间
% calendar 返回日历, clock 当前时间, date当前日期
% weekday 星期, now 当前日期和时间, ecomday 一个月的最后一天
% datevec 以向量显示日期, datestr 以字符显示日期, datenum 以数值显示日期, datetick 指定坐标轴的日期
% cputime 经过的cpu时间, etime 经过的时间
% tic 计时开始, toc 计时结束
% 3.1 获取日期
clc,clear
c1=clock %获取当前日期,向量(年,月,日,时,分,秒)
d1=date %获取当前日期,日-月-年
n1=now %获取当前日期,双精度表示
calendar %显示当月日历
d2='28-Dec-2000'
calendar(d2) %返回date的日历
calendar(2000,12) %返回2000年12月的日历
a1,b1]=weekday(728647) %返回星期的数字和字符串
[a2,b2]=weekday(d2)
eomday(2020,2) %返回该月最后一天
% 3.2 日期格式转换
% 提供了三种格式:双精度日期、字符串、数值向量
% datenum(), datestr(), datevec()
clc,clear
d1=datestr(now)
d2=datestr(now,'dd-mm-yyyy')
d3=datestr(now,1)
d4=datestr(now,'HH:MM:SS')
d5=datestr(now,13)
% 3.3 计时函数
% tic启动一个秒表,toc暂停一个秒表
clc,clear
tic
for i=5:12
a=inv(pascal(i));
t(i-4)=toc;
end
plot(5:12,t)
xlabel('阶数')
ylabel('时间、秒')
% etime(t1,t0) 返回参数t1和t0之间的时间,单位秒
clc,clear
t=clock
for i=1:100000 %循环
v(i)=exp(i);
end
t1=etime(clock,t) %计时1
clear
t=clock;
i=1:100000; %矢量
y(i)=exp(i);
t2=etime(clock,t) %计时2
% cputime 返回从当前MAtlab启动之后所用CPU时间,单位秒
clc,clear
t=cputime
i=1:1000000;
y(i)=exp(i);
t1=cputime-t
常量和变量
%% 4 常量和变量
% 4.1 常量
% INF,inf 表示无穷大,允许的最大的数为2^1024
% ANS,ans 默认变量名,保存最后一次运算结果
% pi 圆周率
% NaN,nan 不定值0/0
% realmax 最大值的实数, realmin 最小值的实数
% eps 浮点数的相对误差
% i,j 复数单位,-1的平方根
% nargin 函数的输入参数个数,nargout 函数的输出参数个数
% varargin 可变的输入参数个数, varargout 可变的输出参数个数
% beep 使计算机发出“嘟嘟”声
% 4.2 变量命名规则
% (1)不超过31字符,超过的忽略不计
% (2)变量名区分大小写,必须以字母开头,可包含字母、数字、下划线