-
MATLAB table数据结构 首篇
2020-08-31 08:26:33文章PDF浏览下载链接 ... MATLAB常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和结构体数组。除了这些基本数据类型,MATLAB还有很多其它的数据类型不为人熟悉,这些数据类型在编程...MATLAB常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和结构体数组。除了这些基本数据类型,MATLAB还有很多其它的数据类型不为人熟悉,这些数据类型在编程中也非常有用。MATLAB高级数据类型系列旨在向大家介绍它们:比如containers.Map
,tables
,enumeration
和time series
等等,它们为什么有用,用来解决什么问题,并且怎样在科学工程计算中怎么使用。上篇我们提到了映射表结构(containers.Map
)。本篇将介绍另一中新的MATLAB数据类型--table
。table简介
为什么需要table数据结构
MathWorks在MATLAB R2013b中引入了一种新的数据结构叫做table
。table
类似统计 工具箱中的dataset
,其引入的目的就是用来取代dataset
的数据类型。因为表状的数据在工程计算中越来越长久,有了table
类型,MATLAB用户就可以不用购买统计工具箱,也能使用表状的数据结构了。table
本质上来说是一种可以存放各种数据类型的容器,比如下面表Table.1中的数据,其中既有字符型,又有数值类型,其中第一行作为表头:Symbol,Name,Market,Cap,IPO, Year是各列的名字。
在conatiners.Map的章节中,我们介绍了MATLAB的基本数据类型(比如数组,原胞数组和结构体)在表达某些复杂数据类型时的局限性。这里不再一一赘述,读者只需要认识到:数组的局限性在于不能用来存放数值以外的数据,而使用元胞读取和索引内容时有种种不方便,比如无法区分该数据中的表头和其余的行数据。事实上,如果数据存放在如下的CSV文件中,并且用Table.1 NASDAQ股票名称表 Symbol Name Market Cap IPO Year AAPL Apple Inc $742.63B 1980 AMZN Amazon.com, Inc $173.33B 1997 MSFT Microsoft Corporation $346.9B 1986 importdata
直接读取表Table.2中的CSV文件。"Symbol","Name","Market Cap","IPO Year" "AAPL","Apple Inc","$742.63B",1980 "AMZN","Amazon.com Inc","$173.33B",1997 "MSFT","Microsoft Corporation","$346.9B",1986
读入之后数据将会被分成数值和非数值部分:
<span style="color:#333333">% 用importdata直接读入CSV文件 >> nasdaq = importdata('nasdaq.csv') nasdaq = % 结果存在struct中 data: [3x1 double] textdata: {4x4 cell} >> nasdaq.data % csv中的数值部分 ans = 1980 1997 1986 >> nasdaq.textdata % csv中的字符部分 ans = '"Symbol"' '"Name"' '"Market Cap"' '"IPO Year"' 'AAPL' 'Apple Inc' '$742.63B' '' 'AMZN' 'Amazon.com Inc' '$173.33B' '' 'MSFT' 'Microsoft Corporation' '$346.9B' '' </span>
显然这不是我们所期待的要导入格式。
通过导入数据构造table对象
沿用表Table.2中nasdaq.csv文件,我们可以使用
readtable
函数,构造一个新的table对象,把csv文件中的数据导入到该对象中。readtable函数接受文件名称作为输入,返回一个table对象。<span style="color:#333333">% 通过readtable函数来构造table对象 >> nasdaq = readtable('nasdaq.csv') Warning: Variable names were modified to make them valid MATLAB identifiers. nasdaq = Symbol Name MarketCap IPOYear ______ _______________________ __________ _______ 'AAPL' 'Apple Inc' '$742.63B' 1980 'AMZN' 'Amazon.com Inc' '$173.33B' 1997 'MSFT' 'Microsoft Corporation' '$346.9B' 1986 </span>
注意第2行的warning,因为
readtable
函数把nasdaq.csv中的第一行自动变成了这个table的表头,在创建table对象的时候,MATLAB会对做表头的文字做处理,这里把Market Cap和IPO Year两个词中的空格去掉,缩成一个词,这样做是为了方便将来使用dot语法来访问表中的数据。因为MATLAB修改了原来的表头,所以这里给出了warning。调用table构造函数来构造table对象
我们还可以通过直接调用table类的构造函数来创建table对象 (什么是类的构造函数见参加<>第2.5节,构造函数和类的名称相同)。在
containers.Map
的介绍中,我们举了电话号码簿的例子,如表Table.3所示,它是我们这节要构造的table对象的原始数据Table.3 电话号码簿 姓名 电话号码 Abby 5086470001 Bob 5086470002 Charlie 5086470003 下面程序中第1,2行用元胞数组来表示表中每一列的数据,第3行规定了表头的名称,第4行调用table的构造函数创建table对象,先输入数据,再输入表头的名称。表头通过table对象的VariableNames属性来设置。
<span style="color:#333333">name={'Abby';'Bob';'Charlie'}; % 3x1列向量 number={'5086470001';'5086470002';'5086470003'}; % 3x1列向量 colName={'Name','Number'}; phonetable=table(name,number,'VariableNames',colName) </span>
命令行显示如下
<span style="color:#333333">% phonetable在命令行中disp的结果 phonetable = Name Number _________ ____________ 'Abby' '5086470001' 'Bob' '5086470002' 'Charlie' '5086470003' </span>
第4行把Name和Number做为table对象的VariableNames,可以这样理解VariableNames,我们可以把table看成由一个个列数据组成的数据结构,每列都是矢量,其中存放相同类型的数据。如果一个table有两列,它就有两个列矢量,每个列矢量都是table的一个变量(Variable),给变量名字就是Variable Name。
通过转换函数构造table对象
除了使用table的构造函数来创建table对象,还可以使用转换函数把其它数据类型转成table,下列通过数组数据类型类构造table。下面的程序的1-2行,我们利用financial工具箱中的fetch函数,从Yahoo财经处得到雅虎从3月1日到3月10日的股票价格,fetch函数将返回一个数组,第3行我们利用array2table转换函数把得到数组转成table。
<span style="color:#333333">% 通过array2table创建table对象 conn = yahoo; array = fetch(conn,'YHOO','3/1/2015','3/10/2015'); yhoo = array2table(array,... 'VariableNames', {'date','open','high','low','closing','volumn','adjusted'}) </span>
第4行中,我们通过VariableName来指定表头的内容,结果显示如下
<span style="color:#333333">% yhoo的table在命令行的显示 yhoo = date open high low closing volumn adjusted __________ _____ _____ _____ _______ __________ ________ 7.3603e+05 42.57 42.92 42.18 42.68 1.0601e+07 42.68 7.3603e+05 43.6 43.93 42.67 42.98 1.1802e+07 42.98 7.3603e+05 43.98 44.24 43.4 43.44 1.1888e+07 43.44 7.3603e+05 44.18 44.31 43.5 44.16 1.1868e+07 44.16 7.3603e+05 42.08 44.38 41.97 43.99 3.0099e+07 43.99 7.3603e+05 43.7 43.95 42.42 42.62 2.2392e+07 42.62 7.3603e+05 44.06 44.43 43.7 44.11 1.1027e+07 44.11 </span>
访问table中的数据
通过表Table.1所建立的table对象,在命令行中显示如下:
<span style="color:#333333">% nasdaq table在命令行中的显示 nasdaq = Symbol Name MarketCap IPOYear ______ _______________________ __________ _______ 'AAPL' 'Apple Inc' '$742.63B' 1980 'AMZN' 'Amazon.com Inc' '$173.33B' 1997 'MSFT' 'Microsoft Corporation' '$346.9B' 1986 </span>
我们可以通过使用dot+Variablename的语法直接访问table中的列,返回的结果是cell格式的数据:
<span style="color:#333333">% 使用dot语法访问table中的数据 >> nasdaq.Symbol % dot格式+变量名的访问方式 ans = 'AAPL' 'AMZN' 'MSFT' >> class(nasdaq) % 返回cell格式的数据 ans = cell </span>
table类重载了subsref函数(什么是运算符的重载,参加《MATLAB面向对象编程-从入门到设计模式》12.1节),于是支持MATLAB传统的圆括号下标访问,如果要访问第一行,则:
<span style="color:#333333">% 使用下标语法访问table中的数据 >> nasdaq(1,:) ans = Symbol Name MarketCap IPOYear ______ ___________ __________ _______ 'AAPL' 'Apple Inc' '$742.63B' 1980 </span>
使用圆括号,返回的结果仍然是table,如果要访问第2到3行,则:
<span style="color:#333333">% 使用下标语法访问table中的数据 >> nasdaq(2:3,:) ans = Symbol Name MarketCap IPOYear ______ _______________________ __________ _______ 'AMZN' 'Amazon.com Inc' '$173.33B' 1997 'MSFT' 'Microsoft Corporation' '$346.9B' 1986 </span>
返回的结果仍然是table。 table数据结构支持MATLAB传统的花括号下标访问,返回的结果是cell格式的数据
<span style="color:#333333"> % 花括号下标访问 >> nasdaq{:,1} % 花括号下标访问,返回第一列中的数据 ans = 'AAPL' 'AMZN' 'MSFT' </span>
还可以把Dot语法和下标语法结合起来获取数据,下例代码访问table第一列的第三行,返回的结果是元胞。
<span style="color:#333333">% Dot语法和圆括号下标访问结合 >> nasdaq.Symbol(3) ans = 'MSFT' >> class(ans) % 圆括号下标访问,返回结果是元胞 ans = cell </span>
图Figure.1中以表Table.1中的数据为例,总结了几种访问table中不同区域的数据的方法。
Figure.1 访问table中的数据
-
MATLAB映射表数据结构
2020-08-25 14:17:46MATLAB常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和结构体数组。除了这些基本数据类型,MATLAB还有很多其它的数据类型不为人熟悉,这些数据类型在编程中也非常有用。MATLAB高级数据类型系列旨在...MATLAB常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和结构体数组。除了这些基本数据类型,MATLAB还有很多其它的数据类型不为人熟悉,这些数据类型在编程中也非常有用。MATLAB高级数据类型系列旨在向大家介绍它们:比如
containers.Map
,tables
,enumeration
和time series等等,它们为什么有用,用来解决什么问题,并且怎样在科学工程计算使用。本篇首先介绍containers.Map
数据类型。containers.Map简介
MATLAB中最具代表性的高级数据类型是containers.Map,我们可以把它叫做映射表。它和函数映射有些类似,比如函数映射的定义是:
F(x) = Y
针对每一个X,都有一个唯一的Y与之对应,反之不一定。如图Fig.1所示。和函数映射相似,映射表用来形容键(Key)和键值(Key Value)之间的一一对应关系。每个Key都是独一无二的,且只能对一个Key Value。如图Fig.2所示。
Fig.1 函数映射关系
Fig.2 containers.Map类的映射示意图
数组,元胞和结构体的局限性
开始我们先介绍一下数组,元胞数组和结构体的局限性,为什么有的时候这些基本的数据类型无法满足程序的要求,换句话说,我们为什么需要
containers.Map
数据结构。假设要用MATLAB来记录电话号码簿中数据,比如表Table.1所示:Table.1 电话号码簿 姓名 电话号码 Abby 5086470001 Bob 5086470002 Charlie 5086470003 先讨论数组,因为电话号码簿中既含有数字,又含有字符串,而数组中只能存放Double类型的数据,所以没有办法用数组直接记录电话号码薄中的内容。 再试试元胞数组,我们在第1行预先声明一个
3 X 3
的元胞数组,然后在2-4行按顺序填放号码簿的内容。% 元胞数组初始化 addressBook = cell(3,1); % 预分配大小是MATLAB编程的好习惯 addressBook{1} = {'Abby', '5086470001'}; addressBook{2} = {'Bob' , '5086470002'}; addressBook{3} = {'Charlie', '5086470003'};
需要的时候,可以通过for循环访问其中的内容,比如:
for iter = 1:length(addressBook) % 元胞数组的遍历 addressBook{iter} % 通过Index访问元胞中的内容 end
但是按照顺序遍历电话号码簿没有什么实际用处,号码簿的主要功能应该是提供查找的功能才是。比如要想查询Charlie的电话号码,我们希望程序最好可以写成如下这样:
CharlieNum = addressBook{'Charlie'} % 提示:这是错误的写法
或者
CharlieNum = addressBook.Charlie % 提示:这是错误的写法
但是元胞数组的值只能通过Index去访问内容,不支持如上的访问方式。所以为了找到Charlie的电话号码,程序不得不遍历元胞中的所有内容,取出每一个元胞元素的第一列的字符串做比较,如果名字等于Charlie,则输出电话号码:
% 使用for循环查找 for iter = 1:length(addressBook) if strcmp(addressBook{iter}{1},'Charlie') addressBook{iter}{2} % 如找到则输出电话号码 break; end end
当然还有其他的方式来盛放电话号码簿,比如把电话和名字分别存到到两个元胞数组中去
names = {'Abby','Bob','Charlie'}; % 用元胞放号码 numbers = {'5086470001','5086470002','5086470001'}; % 用元胞放名字 ind = find(strcmp(names,'Charlie')); % strcmp接受向量的输入 返回Logical数组 % find紧接着找出逻辑数组中非零元素的Index numbers{ind}
其中第3行strcmp接受元胞作为输入,在其中寻找Charlie,find函数将返回Charlie所在的位置,这样的方式比使用for循环要快,但无一例外的是,两种方法都要从头开始遍历一个数组,终究来说是慢的。 除查找性能慢外,使用元胞盛放电话号码簿类型的数据还有其它缺点:
- 无法方便的验证重复数据。电话号码簿要求每一个人的名字都是独一无二的,所以在数据录入的时候要防止姓名的重复,但是我们没有其它办法知道某名字是否已经被使用过了,除非在每次输入的时候都对整个元胞里的内容做遍历比较。
- 无法方便地添加内容。如果电话号码簿中的记录需要不断地增长,但是我们没有办法在一开始就估计出其大概的数量,于是无法有效的预先分配内存,所以添加数据时,一旦超过预先分配的量,MATLAB就要重新分配内存了。
- 无法方便地删除内容。如果我们要从元胞中去掉某一记录,可以找到该记录,并把该位置的元胞内容置空,但这并不会自动减小元胞数组的长度,如果 这样的删减操作多了,元胞中会留下很多没有利用的空余位置。
- 不方便作为函数的参数,具体原因见struct的局限性.
最后我们再尝试一下用结构体盛放电话号码簿数据类型,struct的赋值很简单,比如可以直接赋值:
% 赋值方法1 addressBook.Abby = '5086470001'; addressBook.Bob = '5086470002'; addressBook.Charlie = '5086470003';
或者:
% 赋值方法2 addressBook = struct('Abby','5086470001','Bob','5086470002','Charlie','5086470003')
方法1和方法2是等价的。 struct数据类型的查找很方便,比如要查询Charlie的电话号码,直接访问struct中的同名的field即可以了。
num = addressBook.Charlie
如果要查询的人名是一个变量, 我们可以使用getfield函数:
num = getfield(addressBook,name) % 其中name是变量
struct盛放电话号码簿类型的数据,查询起来确实比元胞进步了不少,但还是有些不方便的地方。 因为struct的field的名字要求必须是以字母开头,这是一个很大的局限,并不是所有的类似电话号码簿的结构都可以用人名做索引,比如账户号码簿,股票代码等等,他们通常是用数字开头的,比如图Table.2中的数据:
Table.2 深证股票代码 股票代码 股票名称 000001 深发展 000002 万科 000004 ST国农 如果我们要求通过股票的代码来查找股票的具体信息,struct无法简单的直接做到。 使用struct的另一个不方便之处在于,当把struct当做函数参数,并且在函数内部需要对该struct做一定的修改时,为了要把修改后的结果返回,我们需要对原来的struct做完全的拷贝,显然如果struct中的数据很多的话,这样做是低效的。比如下面的函数中,addressBook被当做函数的参数传入,在函数中添加了一个新的field, 为了返回更新后的结构,函数内部必须重新构造一个新的struct,也就是s返回给该函数的调用者。
% 把struct当做函数的参数 function s = modifystruct(s) s.Dave = '5086470004'; end
用containers.Map来记录电话号码簿
上面一节我们介绍了数组,元胞数组和结构体在模拟电话号码簿这种数据结构时的局限性,这节我们来看怎么用
containers.Map
来盛放电话号码簿中的内容:addressMap = containers.Map; % 首先声明一个映射表对象变量 addressMap('Abby') = '5086470001'; addressMap('Bob') = '5086470002'; addressMap('Charlie') = '5086470003';
第一行我们声明一个containers.Map的变量(其实是containers.Map类的对象)叫做addressMap,2,3,4行通过提供Key Key Value的方式来给对象赋值,其中单引号内部的值叫做键(Key),等式右边的叫做键值(Key Value)。通过这个结构,我们在MATLAB内存中,建立起了如图Fig.3的映射关系数据结构。
Fig.3 电话号码簿映射表
Fig.4 Map类的UML
查找addressMap对象中的内容极其方便,比如查找我们想知道Charlie的电话号码,只需:
% 查找 num = addressMap('Charlie')
如果我们要修改Charlie的电话号码,只需 :
% 赋值 addressMap('Charlie') = newNum;
什么是containers.Map
containers.Map
是一个MATLAB的内置类(类是面向对象编程中的一个基本概念,在这里可以把类暂时理解成一种数据类型),所谓内置,就是MATLAB内部实现的,通常这种类的性能更加的优秀。containers.Map其中containers是Package的名称,Map是该Package中的一个类,Map是它的类名。用UML(Unified Modeling Language)的语法把该类表示出来,它的属性包括Count, KeyType,ValueType。它的常用方法包括keys,values,isKey,remove。如图Fig.4所示。containers.Map的属性和成员方法
这节我们介绍containers.Map的属性和成员方法,假设我们这样初始化一个containers.Map对象:
% 初始化一个Map对象 addressMap = containers.Map; addressMap('Abby') = '5086470001'; addressMap('Bob') = '5086470002'; addressMap('Charlie') = '5086470003';
在命令行中键入该对象的名称,MATLAB会显示该对象属性的基本信息:
>> addressMap addressMap = Map with properties: Count: 3 % MAP 中映射对的数目 KeyType: char % MAP 中键的类型 ValueType: any % MAP 中键值的类型
其中Count 表示Map对象中映射对的数目。按照规定,键的类型一定要是字符类型,不能是其它数据类型,而键值的类型可以是MATLAB中的任意类型:数组,元胞,结构体,MATLAB对象,甚至JAVA对象等等。因为键值的类型可以是任何MATLAB类型,所以
containers.Map
是MATLAB中极其灵活的数据类型。 成员方法keys 用来返回对象中所有的键:>> addressMap.keys ans = 'Charlie' 'Abby' 'Bob'
成员方法values用来返回对象中的所有键值
>> addressMap.values ans = '5086470003' '5086470001' '5086470002'
remove用来移除对象中的一个键-键值对,经过下面的操作之后,该对象中的Count的值变成了2。
>> addressMap.remove('Charlie') ans = Map with properties: Count: 2 % 映射对数目减少 KeyType: char ValueType: any
isKey成员方法用来判断一个map对象中是否已经含有一个键值,比如:
>> addressMap.isKey('Abby') ans = 1 >> addressMap.isKey('abby') % 键是大小写敏感的 ans = 0
isKey的功能是查询,类似之前提到的find和strcmp函数合起来使用的例子。
containers.Map的特点
containers.Map可以不断地扩张不需预分配
使用数组和元胞数组作为数据容器,通常要预先分配容器的大小。否则每次扩充容器,MATLAB都会重新分配内存,并且拷贝原来数组中的数据到新分配的内存中去。映射表是一个可以灵活扩充的容器,并且不需要预分配,每次往里面添加内容不会引起MATLAB重新分配内存。 我们可以通过提供两个元胞来构造映射表对象,比如下面我们构造一个机票簿数据结构:
% 映射表的初始化方法1 ticketMap = containers.Map( {'2R175', 'B7398', 'A479GY'}, ... {'Abby', 'Bob, 'Charlie'});
也可以在程序的一开始,先声明一个对象:
% 映射表的初始化方法2 >> ticketMap = containers.Map
然后在计算的过程中慢慢的向表中插入数据:
% 映射表的初始化方法2 >> ticketMap['2R175'] = 'Abby'; ... >> ticketMap['A479GY'] = 'Charlie;
containers.Map可以作为参数在函数内部直接修改
因为containers.Map是handle类(handle类的介绍参见《MATLAB面向对象编程-从入门到设计模式》第三章:MATLAB的句柄类和实值类),我们还可以方便的将这个对象传给任何MATLAB的函数,并且在函数内部直接修改对象内部的数据,并且不用把它当做返回值输出,比如:
>> modifyMap(ticketMap);
modifyMap函数可以写成:
function modifyMap(ticketMap) % 该函数没有返回值 ..... ticketMap(NewKey) = newID end
注意这里没有把修改的ticketMap当做返回值,在函数中我们直接修改了Map中的数据,这是MATLAB面向对象语言中handle类的特性。
containers.Map可以增强程序的可读性
映射表内部可以存储各种类型的数据,并且给它们起一些有意义的名字。具体的例子见元素周期表的例子。 访问和修改这些数据的时候,可以直接使用这些有意义的名字,从而增加程序的可读性。而如果用元胞数组存储这些数据,在访问和修改这些数据的时候, 需要使用整数的Index,程序可读性不够好。
containers.Map提供对数据的快速查找
映射表查找的复杂度是常数O(C)的,而传统的数组和元胞数组查找的复杂度是线性O(N)的。如果不熟悉算法中复杂度的概念,可以这样理解:如果使用数组或者元胞来存储数据,当我们要在该数据结构中搜索一个值时,只能做线性搜索,平均下来,搜索的时间和该数据结构中的元素的数目N成正比,即元胞和数组中的元素越多,找到一个值所用的时间就越长,这叫做线性的复杂度 O(N)。而映射表采取的底层实现是哈希表(Hash Map),搜索时间是常数C,理论上来说搜索速度和集合中元素的个数没有关系。所以当容器中元素数量众多的时候,要想查找得快,可以使用containers.Map结构。具体例子见快速查找的例子。 下面通过对假想的数据集合进行查找,来比较一下数组和container.Map的性能。我们第一行先构造一个含有1000000(10^7)个整数的数组(这是数组中元素的个数很多,如果只有少量元素,线性查找的效率会高一些),按顺序填充从1到(10^7)的整数;作为比较,第二行再构造一个containers.Map对象,往内部填充从1到(10^7)的整数,Key和KeyValue都相同。
a = 1:1000000; m = containers.Map(1:1000000,ones(1,1000000));
数组数据结构,使用find函数依次查找从1到(10^7)的整数,在笔者的机器上,耗时28.331901秒
% array的查找 tic for i=1:100000, find(b==i); end; toc
% command line结果 Elapsed time is 28.331901 seconds.
containers.Map数据结构,使用键值1到(10^7)进行访问, 在笔者的机器上,耗时只需1.323007秒, 结论是:如果有大量的数据,并且要频繁的进行查找操作,可以考虑使用containers.Map数据结构。(读者可以试试减少容器中元素的个数,观察一下什么情况下,数组的查找会更快一些。)
% 映射表的查找 tic for i=1:100000, m(i); end; toc
% command line结果 Elapsed time is 1.323007 seconds.
谈到在MATLAB中使用高级数据结构,另一种常见的做法是直接使用Java和Python对象,这里顺便比较一下在MATLAB中使用Java的哈希表的效率。再笔者的机器上,耗时3.072889秒.
% JAVA哈希表的查找 s = java.util.HashSet(); for i=1:100000, s.add(i); end tic; for i=1:100000, s.contains(i); end; toc
% command line结果 Elapsed time is 3.072889 seconds.
containers.Map的使用实例
用来盛放元素周期表
工程计算中可以使用这种键-键值的例子有很多。比如物理化学计算中可以用映射表来盛放元素周期表中的内容:
>> ptable = containers.Map; >> ptable('H') = 1 ; >> ptable('He') = 2 ;
其中键是原子符号,而键值是原子量。因为键值的类型不限,所以键值本身还可以是对象,比如Atom类对象,其中包涵更多有用的内容:
% 类文件Atom.m classdef Atom < handle properties atomicNumber fullName end methods function obj = Atom(num,name) obj.atomicNumber = num ; obj.fullName = name end end end
\end{Verbatim} 于是:
% 键值可以是Atom对象 >> ptable('H') = Atom(1,'hydrogen'); >> ptable('H') = Atom(2,'helium');
用来实现快速地检索
这个问题来自ilovematlab一个网友的提问:
大家好,最近遇到一个问题,要构建20000次以上的三元素向量,且保证每次不重复构建,该向量元素值在2000―3000之间不定数,目前采用的方法是建立一历史档案矩阵A,构建一个存储一行,A大小行数持续增加。每次在构建出一新的向量时对该向量与历史档案矩阵每行进行对比,最终确定是否构建过,若没构建过,重新构建。算法显示该检查程序运算时间在执行20000次以上时,会超过200S的运行时间。想力争减小该时间,求方法。 多谢!
这位网友的问题不在于如何构建这些向量,而是如何保证每次不重复的构建。他一开始想出的解决方法是用矩阵A来存储历史档案,每建立一个新的向量,和该历史档案已有的内容做比较,如果在档案中没有存档,则构建。这样设计的问题是,如他所述,当A中存储的向量变多之后,每次检查该向量是否之前被创建过的时间加长。 这是一个典型的可以用映射表来解决的问题,把线性的复杂度转成常数的复杂度。他可以给每个向量设计一个独立无二的ID,比如直接转数字成id :
num2str(vector)
% 构建 mydictionary = containers.Map % 插入数据 id = num2str(vector) ; % 比如vector = [1 2 3]; mydictionary('some_id') = vector ;
之后的检索也是通过vector得到独一无二的ID,然后通过isKey来判断该键值是否已经被加入到MAP中去了。
some_otherID = some_other_vector ; % 验证是否已经构建给过 if mydictinary.isKey('some_otherID') % 做要做的工作 end
-
matlab计算涡度的函数_教程合集 | MATLAB数据处理基础
2021-01-10 17:43:59又到了学习的周一!接下来进入我们大家平时最头痛也是花费时间...文末有简单的气象相关的编程实例(如方差、滑动检验、流函数势函数等)可供学习~1.MATLAB数据类型 MATLAB提供15种基本数据类型,常用数据结构是整型...又到了学习的周一!接下来进入我们大家平时最头痛也是花费时间最多的部分——数据处理。MATLAB在数据处理方面有着显著的优势,可视化的数据窗更让数据分析的过程变得十分便捷。一起来学习一下MATLAB的数据部分的基础知识吧!文末有简单的气象相关的编程实例(如方差、滑动检验、流函数势函数等)可供学习~
1.MATLAB数据类型
MATLAB提供15种基本数据类型,常用数据结构是整型数据、单精度浮点型、双精度浮点型、逻辑型、字符串型、单元数组和结构体类型。
下表显示了MATLAB中的数据类型:
数据类型
含义
int8
8位有符号整数
uint8
8位无符号整数
int16
16位有符号整数
uint16
16位无符号整数
int32
32位有符号整数
uint32
32位无符号整数
int64
64位有符号整数
uint64
64位无符号整数
single
单精度数值数据
double
双精度数值数据
logical
1或0,分别代表true和false
char
字符串
结构体
具有能够存储不同维数和数据类型的数组的命名字段
单元格阵列
能够存储不同维数和数据类型的数组
函数处理
指向一个函数的指针
用户类
用户定义的类构造的对象
Java类
从Java类构造的对象
2.数据类型转换
在实际应用过程中,常常会出现字符和数字等数据结构之间互相转换的情形,MATLAB提供了各种用于将一种数据类型转换为另一种数据类型的函数。
MATLAB自带的转换函数有:
函数
描述说明
char
转换为字符串
int2str
将整数数据转换为字符串
mat2str
将矩阵转换为字符串
num2str
将数字转换为字符串
str2double
将字符串转换为双精度值
str2num
将字符串转换为数字
native2unicode
将数字字节转换为Unicode字符
unicode2native
将Unicode字符转换为数字字节
base2dec
将基数N字符串转换为十进制数
bin2dec
将二进制数字串转换为十进制数
dec2base
将十进制转换为字符串中的N数字
dec2bin
将十进制转换为字符串中的二进制数
dec2hex
将十进制转换为十六进制数字
hex2dec
将十六进制数字字符串转换为十进制数
hex2num
十六进制数字字符串转换为双精度数字
num2hex
将单数转换为IEEE十六进制字符串
cell2mat
将单元格数组转换为数组
cell2struct
将单元格数组转换为结构数组
cellstr
从字符数组创建字符串数组
mat2cell
将数组转换为具有潜在不同大小的单元格的单元阵列
num2cell
将数组转换为具有一致大小的单元格的单元阵列
struct2cell
将结构转换为单元格数组
使用方式形如:
a = 3.145;b = num2str(a);
判断变量的数据类型可用函数calss:
class(b)
得到变量b的数据类型是字符串:
3.运算符
与大多数编程语言一样,MATLAB中运算符分为算术运算符、逻辑运算符、关系运算符、位运算、集合运算。
在气象编程中,掌握算术运算、逻辑运算和关系运算就足够各位小伙伴应付99%的编程需求啦~
3.1 算术运算符
+、-、*、/这四个符号分别表示平时计算器上使用的加、减、乘、除,在这里就不再说明。
以下是一些MATLAB里设定的你可能用到的算术运算符:
符号
功能
. /
矩阵右除
.\
矩阵左除
^
幂运算
'
转置
3.2 关系运算符
关系运算符主要指的是>、
符号
功能
~=
不等于
3.3 集合操作符
顾名思义,就是针对两个数据集合之间进行的操作:
函数
功能
intersect(A,B)
返回两个数据的交集
ismember(A,B)
返回与A大小相同的数组
issorted(A)
判断A是否按顺序排序
setdiff(A,B)
返回不在B中的值
setxor(A,B)
两个数组的异或
union(A,B)
两个数组的并集
unique(A)
除去数组中的重复值,返回一个各元素均唯一的数组
其实学会以上知识其实就足够编出一些简单的如方差、相关等计算脚本啦~练手材料在下方~微信不能链接外部链接,请复制粘贴到地址栏食用~
百看不厌-MATLAB入门经典教程:
bbs.06climate.com/forum.php?mod=viewthread&tid=1909
MATLAB程序百例:
bbs.06climate.com/forum.php?mod=viewthread&tid=18766
计算方法(数值分析)常用算法程序汇总:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=11956
[原创]MATLAB在大气环境科学中的应用:by:zhenliangli
bbs.06climate.com/forum.php?mod=viewthread&tid=50573
用MATLAB实现批量线性回归,附参考源代码!:by:athlon8048
bbs.06climate.com/forum.php?mod=viewthread&tid=3178
最小二乘法:by:lvzhaof
bbs.06climate.com/forum.php?mod=viewthread&tid=11554
MATLAB进行分段拟合:by:shirly
bbs.06climate.com/forum.php?mod=viewthread&tid=29230
MATLAB循环操作矩阵化举例:by:ghf2679451792
bbs.06climate.com/forum.php?mod=viewthread&tid=97899
MATLAB 矩阵运算,for循环太慢?考虑一下逻辑值:by:赵晓康
bbs.06climate.com/forum.php?mod=viewthread&tid=96115
超前滞后相关+滑动平均:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=14512
基于MATLAB的各种多元统计分析模型源代码:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=67774
分享做回归分析的程序——单序列对含NaN的空间场做回归:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=22346
滑动T检验程序:by:daniel_0817
bbs.06climate.com/forum.php?mod=viewthread&tid=41568
滑动相关:by:吴东佑
bbs.06climate.com/forum.php?mod=viewthread&tid=68286
滑动平均MATLAB程序:by:honview
bbs.06climate.com/forum.php?mod=viewthread&tid=21650
日数据处理为月数据和年数据(sum & mean): by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=89092
平均、方差与相关,积分权重导致的计算陷阱:I.空间平均:by:斥鷃
bbs.06climate.com/forum.php?mod=viewthread&tid=42046
MATLAB单因素方差分析: by:kongfeng0824
bbs.06climate.com/forum.php?mod=viewthread&tid=16045
【原创】运用MATLAB做非线性拟合的两种方法:by:卿暮霏
bbs.06climate.com/forum.php?mod=viewthread&tid=18281
MATLAB相关系数计算:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=11123
滑动T+改进MMK+一阶相关系数:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=61399
MATLAB分析多个变量的贡献率:by:汪清旭
bbs.06climate.com/forum.php?mod=viewthread&tid=96266
MATLAB丨绘制引导气流回归场(风场矢量)并进行显著性检验(含代码和数据):by:Chwithin
bbs.06climate.com/forum.php?mod=viewthread&tid=96795
合成分析的显著性检验:by:luyunlong
bbs.06climate.com/forum.php?mod=viewthread&tid=96585
关于MATLAB空间相关性及显著性检验:by:dnh
bbs.06climate.com/forum.php?mod=viewthread&tid=56724
[求助]如何在MATLAB里面对通过显著性检验的区域打点显示?
bbs.06climate.com/forum.php?mod=viewthread&tid=91653
已知uv的大小,求风向标的风向:by:南信大wzx
bbs.06climate.com/forum.php?mod=viewthread&tid=96159
分享一个计算风向的程序:by:天坑一地坑
bbs.06climate.com/forum.php?mod=viewthread&tid=49288
MATLAB丨绘制速度势和辐散风图(含代码、注释、数据、文献等):by:Chwithin
bbs.06climate.com/forum.php?mod=viewthread&tid=94948
MATLAB读取NCEP细网格资料及计算散度、涡度平流、温度平流、K指数等要素:by:F117_ren_0
bbs.06climate.com/forum.php?mod=viewthread&tid=27279
[讨论] 风应力旋度计算:
bbs.06climate.com/forum.php?mod=viewthread&tid=37719
基于彭曼公式ET0计算MATLAB代码:by:Jude
bbs.06climate.com/forum.php?mod=viewthread&tid=69234
问老外要来的EP通量程序:by:愉悦
bbs.06climate.com/forum.php?mod=viewthread&tid=17788
WRF模式结果处理及部分气象参数计算:by:Lighting
bbs.06climate.com/forum.php?mod=viewthread&tid=50188
降雨径流--集中度、集中期--MATLAB代码:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=67900
水文气象要素——年内分配相关指数:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=61308
计算风暴相对螺旋度---程序:by:Mabsh12
bbs.06climate.com/forum.php?mod=viewthread&tid=61287
MATLAB计算旋度-程序分享:by:Aiiky
bbs.06climate.com/forum.php?mod=viewthread&tid=85443
MATLAB流函数与势函数的数值计算程序:by:沙颖凯
bbs.06climate.com/forum.php?mod=viewthread&tid=20777
[原创]MATLAB矢量地理数据相关计算(涡度、散度、平流...):by:沙颖凯
bbs.06climate.com/forum.php?mod=viewthread&tid=20665
发一个MATLAB计算PDSI的函数:by:kingjia
bbs.06climate.com/forum.php?mod=viewthread&tid=43664
计算SPI的MATLAB GUI:by:matbasin
bbs.06climate.com/forum.php?mod=viewthread&tid=97471
【MATLAB】工具箱climate data toolbox好用到爆炸 :
bbs.06climate.com/forum.php?mod=viewthread&tid=94786
分享一个自己编的小程序(求total cloud cover):by:qinkong
bbs.06climate.com/forum.php?mod=viewthread&tid=33159
用MATLAB分析西太平洋副高脊线位置与中国东部整层向北水汽通量的相关性:by:rabialee
bbs.06climate.com/forum.php?mod=viewthread&tid=96473
[求助]西太副高环流指标:
bbs.06climate.com/forum.php?mod=viewthread&tid=97605
[求助]有没有用MATLAB编写的计算CAPE( 对流有效位能)的程序?:
bbs.06climate.com/forum.php?mod=viewthread&tid=7662
本期内容到此结束!意犹未尽?
欢迎到家园MATLAB板块,一起讨论吧!
http://bbs.06climate.com/
编辑:星星伴月
-
matlab 分段函数_教程合集 | MATLAB数据处理基础
2020-12-04 14:47:03又到了学习的周一!接下来进入我们大家平时最头痛也是花费时间...文末有简单的气象相关的编程实例(如方差、滑动检验、流函数势函数等)可供学习~1.MATLAB数据类型 MATLAB提供15种基本数据类型,常用数据结构是整型...又到了学习的周一!接下来进入我们大家平时最头痛也是花费时间最多的部分——数据处理。MATLAB在数据处理方面有着显著的优势,可视化的数据窗更让数据分析的过程变得十分便捷。一起来学习一下MATLAB的数据部分的基础知识吧!文末有简单的气象相关的编程实例(如方差、滑动检验、流函数势函数等)可供学习~
1.MATLAB数据类型
MATLAB提供15种基本数据类型,常用数据结构是整型数据、单精度浮点型、双精度浮点型、逻辑型、字符串型、单元数组和结构体类型。
下表显示了MATLAB中的数据类型:
数据类型
含义
int8
8位有符号整数
uint8
8位无符号整数
int16
16位有符号整数
uint16
16位无符号整数
int32
32位有符号整数
uint32
32位无符号整数
int64
64位有符号整数
uint64
64位无符号整数
single
单精度数值数据
double
双精度数值数据
logical
1或0,分别代表true和false
char
字符串
结构体
具有能够存储不同维数和数据类型的数组的命名字段
单元格阵列
能够存储不同维数和数据类型的数组
函数处理
指向一个函数的指针
用户类
用户定义的类构造的对象
Java类
从Java类构造的对象
2.数据类型转换
在实际应用过程中,常常会出现字符和数字等数据结构之间互相转换的情形,MATLAB提供了各种用于将一种数据类型转换为另一种数据类型的函数。
MATLAB自带的转换函数有:
函数
描述说明
char
转换为字符串
int2str
将整数数据转换为字符串
mat2str
将矩阵转换为字符串
num2str
将数字转换为字符串
str2double
将字符串转换为双精度值
str2num
将字符串转换为数字
native2unicode
将数字字节转换为Unicode字符
unicode2native
将Unicode字符转换为数字字节
base2dec
将基数N字符串转换为十进制数
bin2dec
将二进制数字串转换为十进制数
dec2base
将十进制转换为字符串中的N数字
dec2bin
将十进制转换为字符串中的二进制数
dec2hex
将十进制转换为十六进制数字
hex2dec
将十六进制数字字符串转换为十进制数
hex2num
十六进制数字字符串转换为双精度数字
num2hex
将单数转换为IEEE十六进制字符串
cell2mat
将单元格数组转换为数组
cell2struct
将单元格数组转换为结构数组
cellstr
从字符数组创建字符串数组
mat2cell
将数组转换为具有潜在不同大小的单元格的单元阵列
num2cell
将数组转换为具有一致大小的单元格的单元阵列
struct2cell
将结构转换为单元格数组
使用方式形如:
a = 3.145;b = num2str(a);
判断变量的数据类型可用函数calss:
class(b)
得到变量b的数据类型是字符串:
3.运算符
与大多数编程语言一样,MATLAB中运算符分为算术运算符、逻辑运算符、关系运算符、位运算、集合运算。
在气象编程中,掌握算术运算、逻辑运算和关系运算就足够各位小伙伴应付99%的编程需求啦~
3.1 算术运算符
+、-、*、/这四个符号分别表示平时计算器上使用的加、减、乘、除,在这里就不再说明。
以下是一些MATLAB里设定的你可能用到的算术运算符:
符号
功能
. /
矩阵右除
.\
矩阵左除
^
幂运算
'
转置
3.2 关系运算符
关系运算符主要指的是>、
符号
功能
~=
不等于
3.3 集合操作符
顾名思义,就是针对两个数据集合之间进行的操作:
函数
功能
intersect(A,B)
返回两个数据的交集
ismember(A,B)
返回与A大小相同的数组
issorted(A)
判断A是否按顺序排序
setdiff(A,B)
返回不在B中的值
setxor(A,B)
两个数组的异或
union(A,B)
两个数组的并集
unique(A)
除去数组中的重复值,返回一个各元素均唯一的数组
其实学会以上知识其实就足够编出一些简单的如方差、相关等计算脚本啦~练手材料在下方~微信不能链接外部链接,请复制粘贴到地址栏食用~
百看不厌-MATLAB入门经典教程:
bbs.06climate.com/forum.php?mod=viewthread&tid=1909
MATLAB程序百例:
bbs.06climate.com/forum.php?mod=viewthread&tid=18766
计算方法(数值分析)常用算法程序汇总:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=11956
[原创]MATLAB在大气环境科学中的应用:by:zhenliangli
bbs.06climate.com/forum.php?mod=viewthread&tid=50573
用MATLAB实现批量线性回归,附参考源代码!:by:athlon8048
bbs.06climate.com/forum.php?mod=viewthread&tid=3178
最小二乘法:by:lvzhaof
bbs.06climate.com/forum.php?mod=viewthread&tid=11554
MATLAB进行分段拟合:by:shirly
bbs.06climate.com/forum.php?mod=viewthread&tid=29230
MATLAB循环操作矩阵化举例:by:ghf2679451792
bbs.06climate.com/forum.php?mod=viewthread&tid=97899
MATLAB 矩阵运算,for循环太慢?考虑一下逻辑值:by:赵晓康
bbs.06climate.com/forum.php?mod=viewthread&tid=96115
超前滞后相关+滑动平均:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=14512
基于MATLAB的各种多元统计分析模型源代码:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=67774
分享做回归分析的程序——单序列对含NaN的空间场做回归:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=22346
滑动T检验程序:by:daniel_0817
bbs.06climate.com/forum.php?mod=viewthread&tid=41568
滑动相关:by:吴东佑
bbs.06climate.com/forum.php?mod=viewthread&tid=68286
滑动平均MATLAB程序:by:honview
bbs.06climate.com/forum.php?mod=viewthread&tid=21650
日数据处理为月数据和年数据(sum & mean): by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=89092
平均、方差与相关,积分权重导致的计算陷阱:I.空间平均:by:斥鷃
bbs.06climate.com/forum.php?mod=viewthread&tid=42046
MATLAB单因素方差分析: by:kongfeng0824
bbs.06climate.com/forum.php?mod=viewthread&tid=16045
【原创】运用MATLAB做非线性拟合的两种方法:by:卿暮霏
bbs.06climate.com/forum.php?mod=viewthread&tid=18281
MATLAB相关系数计算:by:Aires
bbs.06climate.com/forum.php?mod=viewthread&tid=11123
滑动T+改进MMK+一阶相关系数:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=61399
MATLAB分析多个变量的贡献率:by:汪清旭
bbs.06climate.com/forum.php?mod=viewthread&tid=96266
MATLAB丨绘制引导气流回归场(风场矢量)并进行显著性检验(含代码和数据):by:Chwithin
bbs.06climate.com/forum.php?mod=viewthread&tid=96795
合成分析的显著性检验:by:luyunlong
bbs.06climate.com/forum.php?mod=viewthread&tid=96585
关于MATLAB空间相关性及显著性检验:by:dnh
bbs.06climate.com/forum.php?mod=viewthread&tid=56724
[求助]如何在MATLAB里面对通过显著性检验的区域打点显示?
bbs.06climate.com/forum.php?mod=viewthread&tid=91653
已知uv的大小,求风向标的风向:by:南信大wzx
bbs.06climate.com/forum.php?mod=viewthread&tid=96159
分享一个计算风向的程序:by:天坑一地坑
bbs.06climate.com/forum.php?mod=viewthread&tid=49288
MATLAB丨绘制速度势和辐散风图(含代码、注释、数据、文献等):by:Chwithin
bbs.06climate.com/forum.php?mod=viewthread&tid=94948
MATLAB读取NCEP细网格资料及计算散度、涡度平流、温度平流、K指数等要素:by:F117_ren_0
bbs.06climate.com/forum.php?mod=viewthread&tid=27279
[讨论] 风应力旋度计算:
bbs.06climate.com/forum.php?mod=viewthread&tid=37719
基于彭曼公式ET0计算MATLAB代码:by:Jude
bbs.06climate.com/forum.php?mod=viewthread&tid=69234
问老外要来的EP通量程序:by:愉悦
bbs.06climate.com/forum.php?mod=viewthread&tid=17788
WRF模式结果处理及部分气象参数计算:by:Lighting
bbs.06climate.com/forum.php?mod=viewthread&tid=50188
降雨径流--集中度、集中期--MATLAB代码:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=67900
水文气象要素——年内分配相关指数:by:kingjames
bbs.06climate.com/forum.php?mod=viewthread&tid=61308
计算风暴相对螺旋度---程序:by:Mabsh12
bbs.06climate.com/forum.php?mod=viewthread&tid=61287
MATLAB计算旋度-程序分享:by:Aiiky
bbs.06climate.com/forum.php?mod=viewthread&tid=85443
MATLAB流函数与势函数的数值计算程序:by:沙颖凯
bbs.06climate.com/forum.php?mod=viewthread&tid=20777
[原创]MATLAB矢量地理数据相关计算(涡度、散度、平流...):by:沙颖凯
bbs.06climate.com/forum.php?mod=viewthread&tid=20665
发一个MATLAB计算PDSI的函数:by:kingjia
bbs.06climate.com/forum.php?mod=viewthread&tid=43664
计算SPI的MATLAB GUI:by:matbasin
bbs.06climate.com/forum.php?mod=viewthread&tid=97471
【MATLAB】工具箱climate data toolbox好用到爆炸 :
bbs.06climate.com/forum.php?mod=viewthread&tid=94786
分享一个自己编的小程序(求total cloud cover):by:qinkong
bbs.06climate.com/forum.php?mod=viewthread&tid=33159
用MATLAB分析西太平洋副高脊线位置与中国东部整层向北水汽通量的相关性:by:rabialee
bbs.06climate.com/forum.php?mod=viewthread&tid=96473
[求助]西太副高环流指标:
bbs.06climate.com/forum.php?mod=viewthread&tid=97605
[求助]有没有用MATLAB编写的计算CAPE( 对流有效位能)的程序?:
bbs.06climate.com/forum.php?mod=viewthread&tid=7662
本期内容到此结束!意犹未尽?
欢迎到家园MATLAB板块,一起讨论吧!
http://bbs.06climate.com/
编辑:星星伴月
-
MATLAB数据类型及转换
2019-09-09 14:00:07MATLAB数据类型及转换 MATLAB的主要数据类型有:整型,浮点型,逻辑,字符,日期和时间,结构数组,单元格数组及函数句柄等,其中函数句柄是MATLAB所特有的一种数据类型。 一:整数型与浮点型 MATLAB提供了几种... -
matlab线性平面映射求通项_[转]MATLAB映射表数据结构containers.Map[by oopmatlab]
2020-12-24 18:29:24MATLAB常用基本数据类型有:整型,浮点型,字符型,函数句柄,元胞数组和结构体数组。除了这些基本数据类型,MATLAB还有很多其它的数据类型不为人熟悉,这些数据类型在编程中也非常有用。MATLAB高级数据类型系列旨在... -
MATLAB常用的形态学操作函数
2013-04-13 16:59:03原文地址:MATLAB常用形态学操作函数作者:ggbondgt 常用形态学操作函数 ...其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀操作。输入图像BW1的类型为double或uni -
MATLAB常用形态学操作函数
2017-03-21 17:05:55MATLAB常用形态学操作函数 (2009-07-15 14:54:25) 转载▼ ...常用形态学操作函数 ...该函数能够实现二值图像的膨胀操作,有以下形式: ...其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵 -
matlab 形态学 颗粒_MATLAB 常用形态学操作函数
2021-01-17 19:19:52常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html)1、dilate函数该函数能够实现二值图像的膨胀操作,有以下形式:BW2=dilate(BW1,SE)BW2=dilate(BW1,SE,…,n)其中:BW2=dilate... -
Matlab常用形态学操作函数
2018-03-09 09:23:30常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html)1、dilate函数该函数能够实现二值图像的膨胀操作,有以下形式:BW2=dilate(BW1,SE)BW2=dilate(BW1,SE,…,n)其中:BW2=dilate... -
MATLAB 常用形态学操作函数
2016-10-11 14:35:00常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1、dilate函数 ...其中:BW2=dilate(BW1,SE)表示使用二值结构要素矩阵SE队图像数据矩阵BW1执行膨胀操作... -
1-4、数据结构——图
2017-09-04 11:21:46图结构是数学建模中最常用的数据结构之一,且图论相关模型在数学建模中也有广泛的应用。本文从数据结构这门课的专业知识出发,第一部分列举了一些与图相关的一些基本概念,包括边、顶点、度等。第二部分列举了一些图... -
1-5、数据结构——map
2017-09-04 15:17:17除此之外还有一些Matlab封装好的数据结构容器,具体类别可以和c++的stl模板库对比。本文介绍的是其中十分具代表性的一种容器:containers.Map,即map容器,用中文我们可以把它叫做映射表。map容器与python中的... -
PCL之常用开源数据集汇总
2020-12-24 17:12:24这一组有一个有用的相关链接列表以及类似的链接 数据。 加拿大行星模拟地形三维映射的数据集 激光扫描非结构化地形从罗孚平台。 包括Matlab代码数据解析。 徕卡呈规则(投影数据) 激光扫描数据的示例数据库。 ... -
Matlab输入输出函数复习课件.ppt
2020-08-12 07:12:03* 数学软件 Matlab 文件操作 优选文档 Matlab数据类型 Matlab 数据类型的最大特点是每一种类型都是以数组为基础Matlab事实上把每种类型的数据都作为数组来处理 Matlab 常用的数据类型有 numeric数值型 char字符型 ... -
Matlab关于人工神经网络在预测中的应用的论文一-基于Matlab的BP神经网络煤炭需求预测模型.pdf
2019-08-13 14:07:29BP神经网络是一种神经网络学习算法,通常预先假定网络的结构已经确定,即已知计算单元的层数,每层的单元数目及单元之间的连接,当输入输出之间是非线性关系及训练数据充足的情况下,它可以出色完成不同领域的问题。... -
语音识别的MATLAB实现
2009-03-03 21:39:18语音识别的MATLAB实现 声控小车结题报告 小组成员:关世勇 吴庆林 一、 项目要求: 声控小车是科大华为科技制作竞赛命题组的项目,其要求是编写一个语言识别程序并适当改装一个小型机动车,使之在一个预先不知道... -
matlab扩展编程 和代码
2018-07-21 14:18:54第1部分(第1章—第6章):MATLAB 6的安装和运行、MatrixVB、Excellink、MATLAB Web Server、MATLAB的数据结构和编程技巧、MATLAB图形用户界面编程:第2部分(第7章—第11章):MATLAB引擎、MATLAB可执行程序、MATLAB ... -
matlab中图和队列
2020-03-04 23:02:48图是一种表示节点之间拓扑关系的数据结构,常用的表示方法有邻接矩阵和邻接表,邻接矩阵是空间换时间的做法,鉴于计算机内存的飞速发展,以及我也比较懒,所以就直接在matlab中声明一个 graph = zeros(totalNu... -
Matlab关于人工神经网络在预测中的应用的论文一-基于BP神经网络的电动小巴需求预测.pdf
2019-08-13 14:07:39BP神经网络是一种神经网络学习算法,通常预先假定网络的结构已经确定,即已知计算单元的层数,每层的单元数目及单元之间的连接,当输入输出之间是非线性关系及训练数据充足的情况下,它可以出色完成不同领域的问题。... -
Matlab关于人工神经网络在预测中的应用的论文一-基于BP神经网络的丝状真菌生长预测研究.pdf
2019-08-13 14:07:50BP神经网络是一种神经网络学习算法,通常预先假定网络的结构已经确定,即已知计算单元的层数,每层的单元数目及单元之间的连接,当输入输出之间是非线性关系及训练数据充足的情况下,它可以出色完成不同领域的问题。... -
详解MATLAB图形绘制技术
2016-01-19 21:46:56书中精选科学和工程中常用的多个算法,全部采用MATLAB语言编程实现,并结合实例对算法程序进行验证和分析。其中详细讲解了MATLAB的基本知识、二维图形的绘制、三维图形的绘制、高级图形绘制技术、动画与视频、几何... -
Matlab基础知识
2009-11-13 13:50:00Matlab常用命令:清除matlab命令窗口中已有的内容:clc 目录:1.显示输出数据2.数组运算和矩阵运算3.多维数组在内存中的存储4.用关键字input 初始化变量5.运算符的优先级问题6.选择结构7.循环结构8.逻辑数组与向量... -
MATLAB R2016a完全自学一本通
2018-03-29 17:00:14Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行... -
[MatLab]1.基础知识
2020-12-06 18:56:25文章目录1.1 MATLAB 环境介绍语句格式1.2 MatLab数值数据常用数学函数(2)常用函数的应用取整函数 fix, floor, ceil, round判断素数函数:isprime()1.3 变量及其操作赋值语句预定义变量变量的管理(1)内存变量的删除... -
【MATLAB R2014a完全自学一本通】-第二部分(共两部分)真正的入门、进阶、实践
2016-04-24 14:04:04《MATLAB R2014a完全自学一本通》面向MATLAB 的初中级读者,在介绍MATLAB R2014a 集成环境的基础上,对MATLAB 使用中常用的知识和工具进行了详细的介绍,书中各章均提供了大量有针对性的算例,供读者实战练习。... -
【MATLAB R2014a完全自学一本通】-第一部分(共两部分)真正的入门、提高、实践
2016-04-24 13:24:38真正的MATLAB入门书、进阶、实践一本通 美国MathWorks公司推荐用书 《MATLAB R2014a完全自学一本通》结构严谨、内容全面、图文并茂、实例丰富,既适合信号处理、通信工程、自动控制、机械电子、自动化、电力电气... -
matlab eye函数_第3章 MATLAB矩阵分析与处理
2020-11-26 17:50:42本章主要内容:3.1 特殊矩阵3.2 矩阵变换3.3 矩阵求值3.4 矩阵的特征值与特征向量3.5 字符串处理3.6 结构数据和单元数据3.7 稀疏矩阵3.1 特殊矩阵3.1.1 通用的特殊矩阵常用的产生通用特殊矩阵的函数有:(1)zeros:... -
VC与Labview、Matlab编程论文资料
2014-05-05 21:41:37基于MATCOM的MATLAB与VC混合编程技术研究.pdf 基于MATLAB_MFC和Vega的飞机刹车视景仿真.pdf 基于Matlab与VC_混合编程的数字信号处理系统.pdf 基于MATLAB与VC_的水轮机综合特性曲线处理系统研究.pdf 基于Matlab与VC的...
-
江西财经大学《统计学》两套期末考试试卷(含答案).pdf
-
vue.js教程
-
Oreo易支付开源版.zip
-
江西财经大学《马克思主义基本原理概论-期末复习.pdf
-
江西财经大学《会计学》简单题汇总(含答案).pdf
-
C#操作注册表的方法详解
-
【Python-随到随学】 FLask第一周
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
江西财经大学《国际金融》期末重点.pdf
-
Leetcode简单demo
-
竞赛图找哈密尔顿回路
-
华为1+X认证——网络系统建设与运维(初级)
-
项目经理成长之路
-
linux基础入门和项目实战部署系列课程
-
vue-router路由懒加载
-
UVA - 737
-
2021年 系统架构设计师 系列课
-
【爱码农】C#制作MDI文本编辑器
-
基于Thinkphp5框架的易支付网站源码(完整可运行)
-
PAT甲级-排序类型-1028 List Sorting解题思路