文章目录
MATLAB数据
矩阵
类型
>> str=' i like drink ' %字符串
str =
' i like drink '
>> whos str
Name Size Bytes Class Attributes
str 1x14 28 char
>> x1=[1:1:5 ;1:2:10 ] %from:step:to
x1 =
1 2 3 4 5
1 3 5 7 9
>> zeros(3,4)%特殊类型
ans =
0 0 0 0
0 0 0 0
0 0 0 0
>> ones(2,3)
ans =
1 1 1
1 1 1
>> eye(2,3)
ans =
1 0 0
0 1 0
>> a=magic(3)
a =
8 1 6
3 5 7
4 9 2
下标
>> a(1,2)%坐标,有 逗号
ans =
1
>> a(1,1)
ans =
8
>> a(5,5)=99
a =
8 1 6 0 0
3 5 7 0 0
4 9 2 0 0
0 0 0 0 0
0 0 0 0 99
>> a(2) % 向下数,单下标,无都好
ans =
3
>> a(25)
ans =
99
>> a(:,3)
ans =
6
7
2
0
0
>> a(3,:)
ans =
4 9 2 0 0
>> a([1 2],[1 3]) %交点
ans =
8 6
3 7
>> a([1 2],[1 2 3])
ans =
8 1 6
3 5 7
>> a(1:2,1:3)%范围 行,列
ans =
8 1 6
3 5 7
>> a(1:2,1:end)
ans =
8 1 6 0 0
3 5 7 0 0
>> m1=logical([1 1 1 1 0]);%逻辑矩阵
>> m2=logical([1 0 0 1 0])
m2 =
1×5 logical 数组
1 0 0 0 0
>> a(m1,m2)%行列
ans =
8
3
4
0
赋值
>> a=magic(3)
a =
8 1 6
3 5 7
4 9 2
>> a(1:2,1:3)=[1 1 1; 1 1 1]%全下标赋值
a =
1 1 1
1 1 1
4 9 2
>> a(5:6)=[55 66]%单下标赋值
a =
1 1 1
1 55 1
4 66 2
>> a(:)=[1 2 3 4 5 6 7 8 9]
a =
1 4 7
2 5 8
3 6 9
删除
>> a=magic(3)
a =
8 1 6
3 5 7
4 9 2
>> a(3,:)=[]
a =
8 1 6
3 5 7
>> a(:,2:3)=[]
a =
8
3
合并
同字符串的第一种合并方式
字符串
合并
>> c=[a;a]
c =
1 4 7
2 5 8
3 6 9
1 4 7
2 5 8
3 6 9
>> b=[a a]
b =
1 4 7 1 4 7
2 5 8 2 5 8
3 6 9 3 6 9
>> a='my name is';%字符串的第一种合并
a =
'my name is'
>> b='待木成植'
b =
'待木成植'
>> c=[a b]
c =
'my name is待木成植'
>> d=[a ;b]%维度要一致
错误使用 vertcat
要串联的数组的维度不一致。
>> d=[a,b,a,b]
d =
'my name is待木成植my name is待木成植'
>> str=strcat(a,b,a,b)
str =
'my name is待木成植my name is待木成植'
处理
>> whos a
Name Size Bytes Class Attributes
a 1x10 20 char
>> disp(a)
my name is
>> length(a)
ans =
10
>> b=double(a)%字符串转换ASCII
b =
列 1 至 7
109 121 32 110 97 109 101
列 8 至 10
32 105 115
>> str1=char(b)%ASCII转换字符串
str1 =
'my name is'
>> strcmp(str1,a)%比较连字符串是否相等
ans =
logical
1
>> strcmp(str1,b)
ans =
logical
0
>> findstr(str1,'name')%寻找字符串
ans =
4
>> str2='2*3 '
str2 =
'2*3 '
>> eval(str2)%执行字符串表达的命令
ans =
6
>> deblank(str2)%删除末尾空格
ans =
'2*3'
>> length(str2)
ans =
5
>> a=ones(1,5)
a =
1 1 1 1 1
>> str2+a
ans =
51 43 52 33 33
逻辑量
逻辑运算时,再讲
多维矩阵
创建方法
>> a=[1 2;3 4]
a =
1 2
3 4
>> a(:,:,2)=[5,6;7 8]%扩展到三维
a(:,:,1) =
1 2
3 4
a(:,:,2) =
5 6
7 8
>> b=rand(2,2,2,2,2)%随机产生一个五维
b(:,:,1,1,1) =
0.8147 0.1270
0.9058 0.9134
b(:,:,2,1,1) =
0.6324 0.2785
0.0975 0.5469
b(:,:,1,2,1) =
0.9575 0.1576
0.9649 0.9706
b(:,:,2,2,1) =
0.9572 0.8003
0.4854 0.1419
b(:,:,1,1,2) =
0.4218 0.7922
0.9157 0.9595
b(:,:,2,1,2) =
0.6557 0.8491
0.0357 0.9340
b(:,:,1,2,2) =
0.6787 0.7431
0.7577 0.3922
b(:,:,2,2,2) =
0.6555 0.7060
0.1712 0.0318
>> a=[1 2;3 4]
a =
1 2
3 4
>> b=[1 1;2 2]
b =
1 1
2 2
>> c=cat(2,a,b)%二维
c =
1 2 1 1
3 4 2 2
>> d=cat(3,a,b)%三维
d(:,:,1) =
1 2
3 4
d(:,:,2) =
1 1
2 2
>> repmat(a,[2 3])%2*3的二维矩阵(a看作一个元素,repmat重复放置
ans =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4
>> repmat(a,[1 2 3])%1*2*3的三维矩阵
ans(:,:,1) =
1 2 1 2
3 4 3 4
ans(:,:,2) =
1 2 1 2
3 4 3 4
ans(:,:,3) =
1 2 1 2
3 4 3 4
>> reshape(a,[1 4])%重塑,1*4
ans =
1 3 2 4
属性
>> a=eye(3)
a =
1 0 0
0 1 0
0 0 1
>> ndims(a)%维度
ans =
2
>> size(a)
ans =
3 3
>> a(3,:)=[]
a =
1 0 0
0 1 0
>> ndims(a)%维度
ans =
2
>> size(a)
ans =
2 3
>> length(a)%返回某一维度,最长的 max(size(a))
ans =
3
>> a=eye(3)
a =
1 0 0
0 1 0
0 0 1
>> a(:,3)
ans =
0
0
1
>> a(:,3)=[]
a =
1 0
0 1
0 0
>> length(a)
ans =
3
>>
元胞
###创建
>> A={'This is a cell.', [1, 2; 3, 4],; rand(3), {'subcell', [1, 2, 3]}}%用大括号,手动输入
A =
2×2 cell 数组
{'This is a cell.'} {2×2 double}
{3×3 double } {1×2 cell }
>> whos A
Name Size Bytes Class Attributes
A 2x2 844 cell
>> B(1, 1)={'This is a cell'}%以元胞依次对元素赋值,生成元胞
B =
1×1 cell 数组
{'This is a cell'}
>> B(2, 1)=[2 3]
无法从 double 转换为 cell。
>> B(2, 1)={[2 3]}
B =
2×1 cell 数组
{'This is a cell'}
{1×2 double }
>> C{1, 1}='This is a cell'%用大括号,创建各元胞元素
C =
1×1 cell 数组
{'This is a cell'}
>> C{2, 1}=[1 2 3]
C =
2×1 cell 数组
{'This is a cell'}
{1×3 double }
显示元胞
>> C
C =
2×1 cell 数组
{'This is a cell'}
{1×3 double }
>> celldisp(C)%完全显示
C{1} =
This is a cell
C{2} =
1 2 3
>> cellplot(A)%效果如下图
获取内容
>> x1=C{2, 1}%提取
x1 =
1 2 3
>> x2=C{2,1}(1,2)%提取
x2 =
2
>> celldisp(A)
A{1,1} =
This is a cell.
A{2,1} =
0.2769 0.8235 0.9502
0.0462 0.6948 0.0344
0.0971 0.3171 0.4387
A{1,2} =
1 2
3 4
A{2,2}{1} =
subcell
A{2,2}{2} =
1 2 3
>> [x4 x5 x6]=deal(A{[1, 2, 4]})
x4 =
'This is a cell.'
x5 =
0.2769 0.8235 0.9502
0.0462 0.6948 0.0344
0.0971 0.3171 0.4387
x6 =
1×2 cell 数组
{'subcell'} {1×3 double}
结构数组
创建
>> student.name='Jim Green';
student.number=12345;
student.score=[85 90]
student =
包含以下字段的 struct:
name: 'Jim Green'
number: 12345
score: [85 90]
>> student(2).name='Ann';
student(2).number=12346;
student(2).score=[80 85]
student =
包含以下字段的 1×2 struct 数组:
name
number
score
获取结构数组内容
getfield(array, {array_index}, field, {field_index})
结构数组名 下标 域名 域中元素的下标
>> getfield(student, {1}, 'score', {2})
ans =
90
添加or修改结构数组的域
setfield(array, {array_index}, field, {field_index})
结构数组名 结构的下标 域名 域中元素的下标
>> student=setfield(student, {1}, 'weight', 70)
student =
包含以下字段的 1×2 struct 数组:
name
number
score
weight
获取结构数组域名三种不同(getfield)
>> fieldnames(student)
ans =
4×1 cell 数组
{'name' }
{'number'}
{'score' }
{'weight'}
获取结构数组内容
>> student
student =
包含以下字段的 1×2 struct 数组:
name
number
score
weight
>> student(1)
ans =
包含以下字段的 struct:
name: 'Jim Green'
number: 12345
score: [85 90]
weight: 70
>> student(1).name
ans =
'Jim Green'
数据格式
默认是五位长度
MATLAB 命令 &含 义 &范 例
format short
format short e
format long
format long e
format rat
format hex
format bank
短格式
短格式科学格式
长格式
长格式科学格式
有理格式
十六进制格式
银行格式
3.1416
3.1416e+000
3.141592653589793S
3.141592653589793e+000
355/113
400921fb54442d18
3.14