python 维也纳滤波_MATLAB


讲真,我觉得最好的说明文档是MATLAB 帮助文档。但是由于朋友们可能看英文费劲,或者更喜欢看我的用“人话”讲解MATLAB用法。下面我从一个MATLAB深度用户的角度来讲解一下MATLAB 中cell数据类型的使用方法和注意事项。文末有福利

1、Cell定义

我感觉Cell的发明是为了补充数值矩阵的不足。Cell 能包含任何类型的数据,比如数值、字符串、逻辑值甚至是Cell自身。说句人话就是Cell 是个筐,啥个都能装。但是由于Cell自己的“都能装”的属性,这个读取和写入就变的些复杂。

2、生成Cell函数

最简单的生成方法就是采用{ }大括号就行。

比如生成2X3的cell矩阵C

C = {'one', 'two', 'three';

1, 2, 3};

或者采用cell生成指大小的空cell矩阵,比如生成2X3cell矩阵D

D=cell(2,3);

或者借助已有的数据矩阵,通过mat2cell生成cell矩阵。

a = magic(3)

c = num2cell(a)

3、Cell读取与写入

这里有一个特别注意的问题,{ }与()有不同的含义:()可以引用与读写“一片”的cell的集合。{ }只能对每一个cell个体进行读写。放心,我知道你们都没有明白我在说什么。具体用法可以看下面的“栗子”

A)( )读取‘一片’cell集合

upperLeft = C(1:2,1:2)

结果就是

upperLeft =

'one' 'two'

[ 1] [ 2]

B) ()写入“一片”

C(1,1:3) = {'first','second','third'}

这样就重新写入了C矩阵的第一行,可见现在的C

C =

'first' 'second' 'third'

[ 1] [ 2] [ 3]

C) { }对单独的一个Cell进行读写

last = C{2,3}

这是读取C的第2行第三列的值,可得

last =

3

要是你打算一起读取,比如

C{2,1:3}

就好得到

ans =

1

ans =

2

ans =

3

MATLAB 依旧我素我行,采用{ }读取好比是从树上摘果子,有一个果子就要有几袋子接着。正确的格式是

[r2c1,r2c2,r2c3]=C{2,:}

r2c1 =

1

r2c2 =

2

r2c3 =

3

4、注意问题

cell是较为高级的数据结构,提供了很多转换函数,能够将一些较为基础的数据结构转为cell,方便进行数据操作。

mat2cell数据矩阵变为cell矩阵,分块可变。num2cell数据矩阵变为cell矩阵,不能改变分块。struct2cell结构体变化cell矩阵table2cellTable变为cell矩阵。

但是也不是最“方便”的数据结构。比如它对自己的行数据和列数据不能进行命名,也没有较为简单的文件读写方式。这些问题在table型数据格式中会解决。