个人爱好分享
1、可以\x0d\x0a2、申请大病救助在户籍所在地的乡镇或街道办的民政办\x0d\x0a3、提供身份证、户口本、诊断书、花费的医疗费用票据等\x0d\x0a4、民政部门根据你所花的总费用进行救助,各地救助比例不同\x0d\x0a5、民政部门救助之前,你的费用先经过城镇职工医保的报销后再进行救助
数据结构
matlab的元胞数组
懂不董02
原创
关注
3点赞·1914人阅读
在Matlab中,元胞数组是一种特殊数据类型,可以将元胞数组看作一种无所不包的通用矩阵(广义矩阵),组成元胞数组的元素可以是任何一种数据类型的常数或常量。
数据类型可以是字符串、双精度数、稀疏矩阵、元胞数组、结构或者其他matlab数据类型,每一个元胞数据可以是标量、向量、矩阵、N维数组,每一个元素可以具有不同的尺寸和内存空间,内容可以完全不同,元胞数组的元素叫做元胞,元胞数组的内存空间是动态分配的,元胞数据的维数不受限制,访问元胞数据可以单下标方式或全下标方式。
元胞数组的创建主要有以下几种 *** :
1.使用运算花括号{},将不同类型和尺寸的数据组合在一起构建一个元胞数组;
2.将数组的每一个元素用{}括起来,然后再用数组创建的符号[]将数组的元素括起来构成一个元胞数组;
3.用{}创建一个元胞数组,Matlab能够自动扩展数组的尺寸,没有明确赋值的元素作为空元胞数组存在;
4.用函数cell创建元胞数组。该函数可以创建一维、二维或者多维元胞数组,但创建的数组都为空元胞。
元胞数组的基本操作:
元胞数组的基本操作包括对元胞和元胞数据的访问、修改、元胞数组的扩展、收缩或者重组。操作数值的函数也可以应用在元胞数组上。
在Matlab中元胞数组的访问有以下几种 *** :
1.可以使用圆括号()直接访问元胞数组的元胞,获取的数据也是一个元胞数组;
2.使用花括号{}直接访问元胞数组的元胞,获取的数据是字符串;
3.将花括号{}和圆括号()结合起来使用访问元胞元素内部的成员。
元胞元素的扩充、收缩和重组均与数值数组大体相同。
A=[{zeros(2,2,2)},{'word'},{15.36},{1:100}]
B=A(1,2)
class(B)
whos
A =
[2x2x2 double] 'word' [15.3600] [1x100 double]
B =
'word'
ans =
cell
Name Size Bytes Class Attributes
A 1x4 1328 cell
B 1x1 120 cell
ans 1x4 8 char
登录后复制
A=[{zeros(2,2,2)},{'word'};{15.36},{1:10}]
B=A{1,2}(2)
C=A{2,2}(5:end)
class(C)
F=A{4}([1 3 5])
whos
A =
[2x2x2 double] 'word'
[ 15.3600] [1x100 double]
B =
o
C =
5 6 7 8 9 10
ans =
double
F =
1 3 5
Name Size Bytes Class Attributes
A 2x2 1328 cell
A1 1x1 8 double
A2 1x1 8 double
A3 1x1 8 double
B 1x1 2 char
C 1x96 768 double
F 1x3 24 double
ans 1x6 12 char
登录后复制
元胞数组的扩充示例:
A=[{zeros(2,2,2)},{'word'};{15.36},{1:10}]
B=cell(2)
B(:,1)={char('hello','Welcome');10:-1:5}
C =[A,B]
D=[A,B,C]
whos
A =
[2x2x2 double] 'word'
[ 15.3600] [1x10 double]
B =
[] []
[] []
B =
[2x7 char ] []
[1x6 double] []
C =
[2x2x2 double] 'word' [2x7 char ] []
[ 15.3600] [1x10 double] [1x6 double] []
D =
[2x2x2 double] 'word' [2x7 char ] [] [2x2x2 double] 'word' [2x7 char ] []
[ 15.3600] [1x10 double] [1x6 double] [] [ 15.3600] [1x10 double] [1x6 double] []
Name Size Bytes Class Attributes
A 2x2 608 cell
A1 1x1 8 double
A2 1x1 8 double
A3 1x1 8 double
B 2x2 316 cell
C 2x4 924 cell
D 2x8 1848 cell
F 1x3 24 double
ans 1x6 12 char
登录后复制
元胞数组的操作函数:
函数 说明
cell 创建空的元胞数组
cellfun 为元胞数组的每个元胞执行指定的函数
celldisp 显示所有元胞的内容
cellplot 利用图形方式显示元胞数组
cell2mat 将元胞数组转化为普通矩阵
mat2cell 将普通的值矩阵转变为元胞数组
num2cell 将数值数组转变为元胞数组
deal 将输入参数赋值给输出
cell2struct 将元胞数组转变为结构
struct2cell 将结构转变为元胞数组
iscell 判断输入是否为元胞数组
cellfun函数主要功能是为元胞数组的每个元素(元胞)分别指定不同的函数,在cellfun函数中可用的函数如下表:
函数 说明
isempty 若元胞为空,则返回逻辑真
islogical 若元胞元素为逻辑类型,则返回逻辑真
isreal 若元胞元素为实数,则返回逻辑为真
length 元胞元素的长度
ndims 元胞元素的维数
prodofsize 元胞元素包含的元素个数
cellfun函数还有以下两种用法:
cellfun(‘size’,C,K)用于获取元胞数组元素第K维的尺寸。
cellfun(‘isclass’,C,classname)用于判断元胞数组的数据类型。
用法如下:
A={rand(2,2,2),'word',pi,17,1+i,magic(5)}
B=cellfun('isreal',A)
C=cellfun('length',A)
A =
[2x2x2 double] 'word' [3.1416] [17] [1.0000 + 1.0000i] [5x5 double]
B =
1 1 1 1 0 1
C =
2 4 1 1 1 5
登录后复制
D={[1] [2 3 4];[5;9] [6 7 8; 10 11 12]}
E=cell2mat(D)
D =
[ 1] [1x3 double]
[2x1 double] [2x3 double]
E =
1 2 3 4
5 6 7 8
9 10 11 12
登录后复制
D=[1 2 3 4; 5 6 7 8; 9 10 11 12]
E=mat2cell(D,[1, 2],[1,3])
D =
1 2 3 4
5 6 7 8
9 10 11 12
E =
[ 1] [1x3 double]
[2x1 double] [2x3 double]
登录后复制
参考:《MATLAB GUI程序设计》王广、邢林芳
matlab
数据结构
破壁机一般的价格是多少
精选推荐
广告
Matlab 元胞数组和结构体
473阅读·0评论·0点赞
2022年1月26日
Matlab中不同类的有效合并
807阅读·0评论·1点赞
2021年3月29日
Matlab中cell2mat函数使用
7087阅读·1评论·3点赞
2021年9月22日
Matlab中的元胞数组
2033阅读·0评论·2点赞
2020年8月4日
Matlab中的元胞数组(cell)
9.6W阅读·10评论·170点赞
2019年7月26日
matlab 元胞数组
1759阅读·0评论·0点赞
2021年9月26日
双面屏幕手机
精选推荐
广告
matlab元胞元素_Matlab元胞数组(Cell Arrays)的创建及访问方式
4756阅读·0评论·5点赞
2021年2月1日
MATLAB深度学习LSTM 标签分类classificationLayer层,YTrain的设置出错
2195阅读·7评论·4点赞
2022年1月15日
元胞数组
4174阅读·0评论·5点赞
2019年6月13日
元胞数组的用法
2.0W阅读·0评论·2点赞
2014年12月1日
matlab学习笔记12_1单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size
1988阅读·1评论·5点赞
2019年10月30日
Matlab中cell2mat,num2cell函数
3.1W阅读·2评论·10点赞
2017年8月10日
javascript ES5中 foreach()遍历 ***
2547阅读·1评论·0点赞
2020年9月28日
matlab 编程实例: 如何统计元胞数组中元素的数量
946阅读·0评论·0点赞
2022年6月24日
matlab元胞数组
991阅读·0评论·1点赞
2019年10月15日
matlab数组元素的个数,matlab数组元素个数
3714阅读·0评论·0点赞
2021年5月6日
如何使用Matlab中的元胞数组?
2529阅读·2评论·1点赞
2021年4月16日
MATLAB元胞数组
2.0W阅读·0评论·4点赞
2017年1月17日
matlab cell2mat报错:元胞内容引用自非元胞数组对象
3978阅读·0评论·0点赞
2020年11月15日
去首页
看看更多热门内容
1. 传输层提供的服务
1.1 传输层的功能
传输层提供应用进程之间的逻辑通信(即端到端的通信)
与 *** 层的区别是, *** 层提供的是主机之间的逻辑通信。
从 *** 层来说,通信的双方是两台主机,IP 数据报的首部给出了这两台主机的IP地址。
但“两台主机之间的通信”实际上是两台主机中的应用进程之间的通信,应用进程之间的通信又称端到端的逻辑通信。
这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。
复用和分用
复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;
分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
注意:
传输层的复用分用功能与 *** 层的复用分用功能不同。
*** 层的复用是指发送方不同协议的数据都可以封装成IP数据报发送出去,
*** 层的分用是指接收方的 *** 层在剥去首部后把数据交付给相应的协议。
传输层还要对收到的报文进行差错检测(首部和数据部分)
*** 层只检查IP数据报的首部,不检验数据部分是否出错。
提供两种不同的传输协议,即面向连接的TCP和无连接的UDP
*** 层无法同时实现两种协议(即在 *** 层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,而不可能在 *** 层同时存在这两种方式)。
1.2 传输层寻址与端口
端口是传输层服务访问点(TSAP),它在传输层的作用类似于IP地址在 *** 层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。
数据链路层的SAP是MAC地址, *** 层的SAP是IP地址,传输层的SAP是端口。
在协议栈层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不同的概念。
硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。
知名端口号
套接字
在 *** 中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中的不同应用进程。在 *** 中采用发送方和接收方的套接字(Socket)组合来识别端点。
1.3 无连接服务与面向连接服务
面向连接的传输控制协议TCP
传送数据之前必须建立连接,数据传送结束后要释放连接。不提供广播或多播服务。由于TCP要提供可靠的面向连接的传输服务,因此不可避免增加了许多开销:确认、流量控制、计时器及连接管理等。
TCP主要适用于可靠性更重要的场合,如文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)等。
无连接的用户数据报协议UDP
传送数据之前不需要建立连接,收到UDP报文后也不需要给出任何确认。
UDP的应用主要包括小文件传送协议(TFTP)、DNS、SNMP和实时传输协议(RTP)。
2. UDP协议
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。
UDP的主要特点:
UDP是无连接的
UDP不会引入建立连接的时延。试想如果DNS运行在TCP而非UDP上,那么DNS的速度会慢很多。HTTP使用TCP而非UDP,是因为对于基于文本数据的Web网页来说,可靠性是至关重要的。
TCP需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制参数和序号与确认号的参数。而UDP不维护连接状态,也不跟踪这些参数。
UDP使用更大努力交付,即不保证可靠交付。
但这并不意味着应用对数据的要求是不可靠的,因此所有维护传输可靠性的工作需要用户在应用层来完成。应用实体可以根据应用的需求来灵活设计自己的可靠性机制。
UDP是面向报文的,适合一次性传输少量数据的 *** 应用。
既不合并,也不拆分,而是保留这些报文的边界。应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。
UDP无拥塞控制,适合很多实时应用。
UDP首部开销小
TCP有20B的首部开销,而UDP仅有8B的开销。
2.1 UDP数据报
UDP首部格式
源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
目的端口。目的端口号。这在终点交付报文时必须使用到。
长度。UDP数据报的长度(包括首部和数据),其最小值是8 (仅有首部)。
校验和。检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。
2.2 UDP校验
3. TCP协议
TCP协议特点
3.1 TCP报文段
TCP报文段的首部格式
TCP传送的数据单元称为报文段。一个TCP报文段分为TCP首部和TCP数据两部分,整个TCP报文段作为IP数据报的数据部分封装在IP数据报中
首部的前20B是固定的。TCP报文段的首部最短为20B,后面有4N字节是根据需要而增加的选项,通常长度为4B的整数倍。
TCP报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答。
序号。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的之一个字节的序号。
确认号字段。占4B,是期望收到对方的下一个报文段的数据的之一个字节的序号。若确认号为N,则表明到序号N - 1为止的所有数据都已正确收到。
数据偏移(即首部长度)。占4位,这里不是IP数据报分片的那个数据偏移,而是表示首部长度,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位(以4B为计算单位)。因此当此字段的值为15时,达到TCP首部的更大长度60B。
保留字段。占6位,保留为今后使用,但目前应置为0,该字段可以忽略不计。
控制位
紧急位URG。URG = 1时,表明紧急指针字段有效。它告诉系统报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。但URG需要和紧急指针配套使用,即数据从之一个字节到紧急指针所指字节就是紧急数据。
确认位ACK。只有当ACK = 1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。
推送位PSH (Push)。 接收TCP收到PSH = 1的报文段,就尽快地交付给接收应用进程而不再等到整个缓存都填满后再向上交付。
复位位RST (Reset)。RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
同步位SYN。同步SYN= 1表示这是一个连接请求或连接接收报文。当SYN=1, ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1, ACK=1。即SYN= 1表示这是一个连接请求或连接接收报文。
终止位FIN (Finish)。用来释放一个连接。FIN= 1表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。
窗口字段。占2B。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据,单位为字节。
例如,假设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的接收方方还有接收1000B数据(字节序号为701 ~1700)的接收缓存空间。
校验和。占2B。校验和字段检验的范围包括首部和数据两部分。在计算校验和时,和UDP一样,要在TCP报文段的前面加上12B的伪首部(只需将UDP伪首部的第4个字段,即协议字段的17改成6,其他的和UDP一样)。
紧急指针字段。占16 位,指出在本报文段中紧急数据共有多少字节(紧急数据放在本报文段数据的最前面)。
选项字段。长度可变。TCP最初只规定了一种选项,即更大报文段长度(Maximum SegmentSize,MSS)。MSS是TCP报文段中的数据字段的更大长度。窗口扩大、时间戳、选择确认
填充字段。这是为了使整个首部长度是4B的整数倍。填充0.
3.2 TCP连接管理
TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立、数据传送和连接释放。
TCP连接的管理就是使运输连接的建立和释放都能正常进行。
每条TCP连接通过通信两端的两个端点( 即两个套接字)确定。
在TCP连接建立的过程中,要解决以下三个问题:
要使每一方都能够确知对方的存在。
要允许双方协商一些参数(如更大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)。
能够对运输实体资源( 如缓存大小、连接表中的项目等)进行分配。
连接的建立 - - - 三次握手
seq为序号字段,标明本次报文段数据部分的之一个字节的序号
ack是确认号字段,告诉对方我接下来应该接收的数据是从字节序号ack开始的数据
ACK是确认位,0时确认号字段ack无效,1时确认号字段ack有效
SYN是同步位
TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。
服务器端的资源是在完成第二次握手时分配的
而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。
SYN泛洪攻击
TCP连接释放----四次握手
TCP连接建立和释放的总结
连接建立。分为3步:
①SYN=1,seq=x。
②SYN=1,ACK=1,seq=y,ack=x+ 1。
③ACK=1,seq=x+1,ack=y+ 1。
释放连接。分为4步:
①FIN=1,seq= u
②ACK=1,seq=v,ack=u+ 1。
③FIN=1,ACK=1,seq=w,ack=u+ 1。
④ACK=1,seq=u+1,ack=w+ 1。
3.3 TCP可靠传输
序号
确认
重传
3.4 TCP流量控制
在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,这称为接收窗口rwnd, 即调整TCP报文段首部中的“窗口”字段值,来限制发送方向 *** 注入报文的速率。
同时,发送方根据其对当前 *** 拥塞程序的估计而确定的窗口值,这称为拥塞窗口cwnd,其大小与 *** 的带宽和时延密切相关。
发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
传输层和数据链路层的流量控制的区别是:
传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。
另外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化。
3.5 TCP拥塞控制
拥塞控制,是指防止过多的数据注入 *** ,保证 *** 中的路由器或链路不致过载。
出现拥塞时,端点并不了解到拥塞发生的细节,对通信连接的端点来说,拥塞往往表现为通信时延的增加。当然,拥塞控制和流量控制也有相似的地方,即它们都通过控制发送方发送数据的速率来达到控制效果。
拥塞控制与流量控制的区别
拥塞控制是让 *** 能够承受现有的 *** 负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低 *** 传输性能有关的所有因素。
流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。
拥塞控制的4种算法:慢开始、拥塞避免、快重传、快恢复
慢开始与拥塞避免
慢开始算法
使用慢开始算法后,每经过一个传输轮次(即往返时延RTT),拥塞窗口cwnd就会加倍,即cwnd的大小指数式增长。这样,慢开始一直把拥塞窗口cwnd增大到一个规定的慢开始门限ssthresh(阈值),然后改用拥塞避免算法。
拥塞避免算法
拥塞避免算法的做法如下:发送端的拥塞窗口cwnd每经过一个往返时延RTT就增加一个MSS的大小,而不是加倍,使cwnd按线性规律缓慢增长(即加法增大),而当出现一次超时( *** 拥塞)时,令慢开始门限ssthresh等于当前cwnd的一半(即乘法减小)。
根据cwnd的大小执行不同的算法,可归纳如下:
●当cwnd ssthresh时,使用慢开始算法。
●当 cwnd ssthresh时,停止使用慢开始算法而改用拥塞避免算法。
●当cwnd = sthresh时,既可使用慢开始算法,又可使用拥塞避免算法(通常做法)。
在慢开始和拥塞避免算法中使用了“乘法减小”和“加法增大” *** 。
“乘法减小”是指不论是在慢开始阶段还是在拥塞避免阶段,只要出现一次超时(即很可能出现了 *** 拥塞),就把慢开始门限值ssthresh设置为当前拥塞窗口值的一半。 *** 频繁出现拥塞时,ssthresh 值就下降得很快,以大大减少注入 *** 的分组数。
“加法增大”是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个 RTT),就把拥塞窗口cwnd增加一个MSS大小,使拥塞窗口缓慢增大,以防止 *** 过早出现拥塞。
快重传和快恢复
快重传
当发送方连续收到三个重复的ACK报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时。
快恢复
发送端收到连续三个冗余ACK (即重复确认)时,执行“乘法减小”算法,把慢开始门限ssthresh 设置为出现拥塞时发送方cwnd的一半。
在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过检测 *** 状况来决定。
注意: 发送方发送窗口的实际大小由流量控制和拥塞控制共同决定。
当发送方检测到超时的时候,就采用慢开始和拥塞避免;
当发送方接收到冗余ACK时,就采用快重传和快恢复。
【参考文章】
计算机 ***
本地期货分析软件免费下载,每天9点发布策略,12月19日免费开
正版期货软件
广告
*** 层,传输层都提供了面向连接和无连接的服务方式
1.7W阅读·4评论·18点赞
2010年5月23日
滑动窗口:数据链路层与传输层
4011阅读·1评论·6点赞
2020年3月28日
计算机 *** 技术(三)—— *** 协议和体系结构
1114阅读·0评论·3点赞
2020年4月30日
传输层与数据链路层滑动窗口协议的异同
5363阅读·1评论·1点赞
2017年3月5日
计算机 *** --传输层
282阅读·0评论·0点赞
2020年6月16日
计算机 *** 知识点总结
4416阅读·0评论·5点赞
2017年8月24日
本地组建600人期货交流群,每天9点发布策略,12月19日免费开户
期货交流平台
广告
数据链路层与传输层协议的区别
148阅读·0评论·0点赞
2021年11月21日
【计算机 *** 】传输层(四)—— TCP 可靠传输、流量控制、拥塞控制
1150阅读·0评论·2点赞
2022年8月12日
【计算机 *** 】传输层(一)—— 传输层概述
1247阅读·0评论·1点赞
2022年8月12日
计算机 *** (二、数据链路层)
138阅读·0评论·0点赞
2020年3月3日
【计算机 *** 】传输层主要作用和功能简述
1.2W阅读·0评论·7点赞
2019年3月2日
*** 五 【进程与进程的通信:传输层】
1510阅读·0评论·2点赞
2021年3月12日
【学习笔记】计算机 *** (三)传输层
353阅读·0评论·0点赞
2022年2月18日
计算机 *** ———传输层
935阅读·0评论·0点赞
2022年5月18日
计算机 *** ——传输层之概述
134阅读·0评论·0点赞
2021年8月10日
计算机 *** (二十)传输层的作用
2212阅读·0评论·1点赞
2019年6月13日
传输层作用概述
2.7W阅读·2评论·12点赞
2018年1月16日
计算机 *** -——传输层
789阅读·0评论·0点赞
2020年2月26日
计算机 *** - 传输层
2199阅读·0评论·0点赞
2021年10月22日
计算机 *** 之传输层
173阅读·0评论·0点赞
[img]网站首页:期货手续费网-加1分开户(微信:527209157)
本文链接:http://52ol.cn/post/67279.html
本站福利推荐!!!
正规期货账户开户!交易所手续费加1分(+0.01元),无条件!无资金手续费要求,享受手续费加1分!期货开户微信:527209157
或扫描下方二维码添加微信
Copyright 2012-2024 期货手续费网-加1分开户 网站地图 邮箱:diyijiaoyi@qq.com 微信:527209157 湘ICP备18014167号