MATLAB一些重要函数与符号用法总结(冒号,取整函数,Cell用法)

别妄想泡我
830次浏览
2021年01月03日 19:32
最佳经验
本文由作者推荐

有多少爱可以重来迪克牛仔-复旦大学陈果

2021年1月3日发(作者:舒希忠)


冒 号

1)a:b 表示[a,a+1,……,b]
1. >> A=1:5
2. A =
3. 1 2 3 4 5
2)如果b- a不是整数的话,则向量的最后一位数是n+a,且n=fix(b-a)
1. >> A=1.2:4.9
2. A =
3. 1.2000 2.2000 3.2000 4.2000
3)上面的前提是ab则会出现空值
1. >> A=5:1
2. A =
3. Empty matrix: 1-by-0
此时 A是空矩阵,看workspace也可以看到A
4)a:c:b表示[a,a+c,……,a+n*c],其中n=fix((b-a)c)
1. >> A=1:3:11
2. A =
3. 1 4 7 10
5)a:c:b在以下情况为空值
c>0,且ab
1. >> A=11:3:1
2. A =
3. Empty matrix: 1-by-0
6)A(:)表示以一列的方式显示A中所有元素
1. >> A=[1 2 3;4 5 6]
2. A =
3. 1 2 3
4. 4 5 6
5. >> A(:)
6. ans =
7. 1
8. 4


9. 2
10. 5
11. 3
12. 6
7)b=A(i, :)表示把矩阵A的第i行存入b
1. >> b=A(1,:)
2. b =
3. 1 2 3
8)b=A( :,j)表示把矩阵A的第j列存入b
1. >> b=A(:,1)
2. b =
3. 1
4. 4
9)b=A(J :K)表示把矩阵A中[A(J),A(J+1),...,A(K)]这些元素存入b中
1. >> b=A(3:5)
2. b =
3. 2 5 3 < br>10)b=A(:,c:d)表示把矩阵A的第c到第d列存入b中,当然c,d大于A的
列数则 出错(b=A(c:d,:)表示取行)
1. >> A=[1 2 3;4 5 6;7 8 9]
2. A =
3. 1 2 3
4. 4 5 6
5. 7 8 9
6. >> b=A(:,2:3)
7. b =
8. 2 3
9. 5 6
10. 8 9
11)当需要 10 9 8 7 6 5 4 3 2 1这
样的数时,用A=[10:1]会产生空矩阵,可用下面的方法:
>> A=[10:-1:1]

A =
10 9 8 7 6 5 4 3 2 1


当矩阵很大时,不知道矩阵的维数,可以用end
>> A=[1 2 3;4 5 6;7 8 9]

A =

1 2 3
4 5 6
7 8 9

>> b=A(:,2:end)

b =
2 3
5 6
8 9
当我们需要 A矩阵第右上角的数时,即
2 3
5 6
这时用‘ :’很难实现
可以用end和冒号一起来实现
>> b=A(1:2,2:end)

b =

2 3
5 6


















取整函数
MATLAB 的取整函数有:
fix(x),floor(x),ceil(x),round(x)

(1)fix(x) : 截尾取整
>> fix( [3.12 -3.12])
ans =
3 -3

(2)floor(x):不超过 x 的最大整数.(高斯取整)
>> floor( [3.12 -3.12])
ans =
3 -4

(3)ceil(x) : 大于 x 的最小整数
>> ceil( [3.12 -3.12])
ans =
4 -3

(4)四舍五入取整
>> round([3.12 -3.12])
ans =
3 -3






Cell用法
Matlab里面元包(Cell)的概念,其元包就是一个类 似矩阵的东西,但是它
的特点就是矩阵的每一项可以放任何的元素,比如:
>> MyCell
MyCell =
Columns 1 through 2
[16x16 double] 'i am a string'
Column 3
[1x1 struct]
MyCell的第一项是一个16x16的矩阵,第二项是一个字符串,第三项是个
结构体。
Cell的使用其实也很简单,和矩阵的用法备尝的类似,不同的矩阵采用()
作为访问的表示 ,如a(1)=10;但是元包是采用花括号的,如MyCell{1}=zeros
(16,16), 当然元包也可以有矩阵的形式MyCell{i,j}(其实元包也可以可用
MyCell(i,j), 但是从字面上看不出和一般的矩阵有任何的区别,我个人还是建
议使用花括号)。
再回到开头的问题,那么就用一个1 x N的元包组来记录这些数据,每个元
包就放置一个矩阵即可。
首先要要创建一个元包用来存放数据,这里有两种方法
(1) DataCell = Cell(1,N);
(2) DataCell{N} = [];
这两种方法的效果是一样产生了一个1*N的元包,没有元素都是空的。
使用的时候也很简单 DataCell{1} = DataArray。其中DataArray就是要存储的
某一行数据。
要访问某行数据也很简单 DataCell{2}(7) 就是表示第2个元包的数组的
第7个元素。
此外元包还有自己的可视化工具,celldis p()和cellplot()分别用作显示
元包的内容和画出元包。

a=cell(n,m)
那么就把a初始化为一个n行m列的空cell类型数据。
如何赋值呢?
a{1,1}=rand(5)
那么a的1行1列的单元中存储的就是一个随机的5×5的方阵了。
那么要用第一个单元中的方阵中的某个值呢?
可以如下引用:a{1,1}(2,3)
就可以了,引用cell单元时要用{},再引用矩阵的某个数据就要用()了。
cell单元中的每个单元都是独立的,可以分别存储不同大小的矩阵或不同类型
的数据。

关于cell的创建:
1.跟一般创建举证一样,直接使用C = {A B D E}这种形式,不过这里把改
成了}


2.使用cell创建cell,C= {C1 C2},这里C1和C2都是cell类型,直接把C1 C2
作为一个cell得到的C3是一个1x2的cell数组;使用C3 = [C1 C2],是使用
C1和C2的内容来创建cell数组
3.使用cell函数,A=cell(2,2),创建一个空的2x2的cell矩阵.

关于cell的访问:
1.X = C(s)使用这种形式的返回的是cell类型
2.X = C{s}使用这种形式的返回的是cell中的内容
3.其他的基本上与通常的数组.矩阵访问一样了
4.A{1,1}(2,3:end)访问 的是A中的第一个cell里面内容的第2行的第三个元素
以后的所有元素
5.A{1,3}.name访问的是A中的A{1,3}cell里面结构的name值
的图形化显示使用命令cellplot(A)即可。


关于cell的删除介绍:
(1)=[]删除第一个cell,不能使用cell{1}=[ ],这是把第一个cell内容置
空没有删除
>>C4={C1,C2,C3}
C4 =
{3x2 cell} {3x3 cell} {3x1 cell}
>> C4(1)=[]
C4 =
{3x3 cell} {3x1 cell}
(:)=[]删除所有的cell,其他的删除一次类推
>> C4(:)=[]
C4 =
{}
B={[1;2]}
这就 定义了一个cell型的变量B,里面保存的是一个矩阵[1;2],要引用里面的
数据只要在大括号里 写上对应的下标即可,如B{1}。

下面我们给B再加个元素,我们可以这样定义
B(2)={'hello'}
也可以利用引用的方法定义
B{2}='hello'
第二种方法比第一种方法更方便所以更常用。
这样B就 有两个元素了,B(1)是{[1;2]},B(2)是{'hello'},每个元素都是cell
型 的(注意和B{1}、B{2}的区别,B{1}是[1;2],B{2}是'hello').


最后向大家介绍个网站:MATLAB中文论坛,上边有个I love matlab,有不懂的
函数或符号,一般都可以在上面查到!!

煎饼侠插曲-趣味运动会


前门大碗茶-毕业个人鉴定


我这个人作文-12年高考作文


东方商人原唱-鲁迅生平


猜猜他是谁-淡泊


英语句型-寻隐者不遇的全诗意思


婚宴酒-感恩父亲的话


咳嗽有痰食疗-缘木求鱼的近义词