ns3自带应用层协议如下:

应用层的开关模型,可以设置开时间和关时间,在开时间以固定的码率产生数据,在关时间不产生数据,只有在开时间可以产生数据和发送分组,具体请看下面分析。
除此之外OnOffApplication还有另外3个常用的属性:

  • PacketSize:发送分组负载大小,单位是B
  • DataRate:分组产生速率,单位可指定不固定
  • MaxBytes:能够发送的最大字节总数,默认值是0,即没有发送字节数上限。

OnOffApplication即支持TCP也支持UDP,对应的服务端应用为PacketSink

以下示例代码在example/tcp/tcp-star-server.cc文件中,拷贝到scratch文件夹下即可运行。拓扑是一个星形拓扑,中间节点运行服务端程序(PacketSink),其他节点运行客户机程序,也就是开关模型

// Default Network topology, 9 nodes in a star
/*n2 n3 n4\ | /\|/n1---n0---n5/| \/ | \n8 n7 n6
*/#include <iostream>
#include <fstream>
#include <string>
#include <cassert>
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"
#include "ns3/ipv4-global-routing-helper.h"using namespace ns3;NS_LOG_COMPONENT_DEFINE ("TcpServer");
void MacTxCallback(std::string context,Ptr<const Packet> packet){NS_LOG_UNCOND("time:"<<Simulator::Now().GetSeconds()<<" size:"<<packet->GetSize()<<" "<<context);
}
void MacRxCallback(std::string context,Ptr<const Packet> packet){NS_LOG_UNCOND("time:"<<Simulator::Now().GetSeconds()<<" size:"<<packet->GetSize()<<" "<<context);
}
void RxPacketCall(std::string context,Ptr<const Packet> packet, const Address &address){NS_LOG_UNCOND ("At time " << Simulator::Now ().GetSeconds ()<< "s packet sink received "<<  packet->GetSize () << " bytes from "<< InetSocketAddress::ConvertFrom(address).GetIpv4 ()<< " port " << InetSocketAddress::ConvertFrom (address).GetPort ());
}
int
main (int argc, char *argv[])
{//LogComponentEnable ("TcpServer", LOG_LEVEL_INFO);//LogComponentEnable ("TcpL4Protocol", LOG_LEVEL_ALL);//LogComponentEnable ("TcpSocketImpl", LOG_LEVEL_ALL);//LogComponentEnable ("PacketSink", LOG_LEVEL_INFO);LogComponentEnable ("OnOffApplication", LOG_LEVEL_INFO);//LogComponentEnable ("Ipv4ListRouting", LOG_LEVEL_INFO);// Set up some default values for the simulation.Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (250));//单位是B=8bit?Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("5kb/s"));//大概是0.4s发送一个分组,分组大小是250b吗?uint32_t N = 3; //number of nodes in the star// Allow the user to override any of the defaults and the above// Config::SetDefault()s at run-time, via command-line argumentsCommandLine cmd;cmd.AddValue ("nNodes", "Number of nodes to place in the star", N);cmd.Parse (argc, argv);// Here, we will create N nodes in a star.NS_LOG_INFO ("Create nodes.");NodeContainer serverNode;NodeContainer clientNodes;serverNode.Create (1);clientNodes.Create (N-1);NodeContainer allNodes = NodeContainer (serverNode, clientNodes);// Install network stacks on the nodesInternetStackHelper internet;internet.Install (allNodes);//Collect an adjacency list of nodes for the p2p topologystd::vector<NodeContainer> nodeAdjacencyList (N-1);for(uint32_t i=0; i<nodeAdjacencyList.size (); ++i){nodeAdjacencyList[i] = NodeContainer (serverNode, clientNodes.Get (i));}// We create the channels first without any IP addressing informationNS_LOG_INFO ("Create channels.");PointToPointHelper p2p;p2p.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));p2p.SetChannelAttribute ("Delay", StringValue ("2ms"));std::vector<NetDeviceContainer> deviceAdjacencyList (N-1);//创建每个节点与中心节点的连接关系vector,每个元素为一个NetDeviceContainer,方便为vector中每个元素的Container中的dev分配相同的网络idfor(uint32_t i=0; i<deviceAdjacencyList.size (); ++i){deviceAdjacencyList[i] = p2p.Install (nodeAdjacencyList[i]);}// Later, we add IP addresses.NS_LOG_INFO ("Assign IP Addresses.");Ipv4AddressHelper ipv4;std::vector<Ipv4InterfaceContainer> interfaceAdjacencyList (N-1);//每条链路不同子网for(uint32_t i=0; i<interfaceAdjacencyList.size (); ++i){std::ostringstream subnet;subnet<<"10.1."<<i+1<<".0";ipv4.SetBase (subnet.str ().c_str (), "255.255.255.0");interfaceAdjacencyList[i] = ipv4.Assign (deviceAdjacencyList[i]);}//Turn on global static routingIpv4GlobalRoutingHelper::PopulateRoutingTables ();// Create a packet sink on the star "hub" to receive these packetsuint16_t port = 50000;Address sinkLocalAddress (InetSocketAddress (Ipv4Address::GetAny (), port));//在port上监听来自所有ip来的包PacketSinkHelper sinkHelper ("ns3::TcpSocketFactory", sinkLocalAddress);ApplicationContainer sinkApp = sinkHelper.Install (serverNode);sinkApp.Start (Seconds (1.0));sinkApp.Stop (Seconds (10.0));// Create the OnOff applications to send TCP to the serverOnOffHelper clientHelper ("ns3::TcpSocketFactory", Address ());clientHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));//是持续产生的意思吗?clientHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));//normally wouldn't need a loop here but the server IP address is different//on each p2p subnetApplicationContainer clientApps;for(uint32_t i=0; i<clientNodes.GetN (); ++i){AddressValue remoteAddress(InetSocketAddress (interfaceAdjacencyList[i].GetAddress (0), port));//参数为服务器的ip和端口号。服务器在不同子网的ip不同clientHelper.SetAttribute ("Remote", remoteAddress);clientApps.Add (clientHelper.Install (clientNodes.Get (i)));//install 函数返回 ApplicationContainer,加入到clientApps记录}//为所有客户端设置开始和结束时间。clientApps.Start (Seconds (1.0));clientApps.Stop (Seconds (10.0));NS_LOG_INFO ("Run Simulation.");std::ostringstream oss;oss << "/NodeList/"<< serverNode.Get (0)->GetId ()<<"/ApplicationList/*"<< "/$ns3::PacketSink/Rx";std::cout<<oss.str();Config::Connect (oss.str (), MakeCallback (&RxPacketCall));//mac接收发送的trace//Config::Connect("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/MacTx",MakeCallback(&MacTxCallback));//Config::Connect("/NodeList/*/DeviceList/*/$ns3::PointToPointNetDevice/MacRx",MakeCallback(&MacRxCallback));Simulator::Run ();Simulator::Destroy ();NS_LOG_INFO ("Done.");return 0;
}

拓扑的建立,每条链路都是点对点信道,且每条信道都是一个网段,ip不同。我们允许应用层的LOG-INFO后就可以在运行后看到应用层产生分组和接收分组的事件打印在终端
开关模型这里的Constant如果设置成1,0的意思就是开1s关0s,也就是一直开着,不断产生分组。

  clientHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=1]"));clientHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0]"));

运行结果:

At time 1.4s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 250 bytes
At time 1.4s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 250 bytes
At time 1.40249s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 1.40249s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 1.8s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 500 bytes
At time 1.8s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 500 bytes
At time 1.80249s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 1.80249s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 2.2002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 750 bytes
At time 2.2002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 750 bytes
At time 2.20269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 2.20269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 2.6002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1000 bytes
At time 2.6002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1000 bytes
At time 2.60269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 2.60269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 3.0002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1250 bytes
At time 3.0002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1250 bytes
At time 3.00269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 3.00269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 3.4002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1500 bytes
At time 3.4002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1500 bytes
At time 3.40269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 3.40269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 3.8002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1750 bytes
At time 3.8002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1750 bytes
At time 3.80269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 3.80269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 4.2004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2000 bytes
At time 4.2004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2000 bytes
At time 4.20289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 4.20289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 4.6004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2250 bytes
At time 4.6004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2250 bytes
At time 4.60289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 4.60289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 5.0004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2500 bytes
At time 5.0004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2500 bytes
At time 5.00289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 5.00289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 5.4004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2750 bytes
At time 5.4004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2750 bytes
At time 5.40289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 5.40289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 5.8004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 3000 bytes
At time 5.8004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 3000 bytes
At time 5.80289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 5.80289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 6.2006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 3250 bytes
At time 6.2006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 3250 bytes
At time 6.20309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 6.20309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 6.6006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 3500 bytes
At time 6.6006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 3500 bytes
At time 6.60309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 6.60309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 7.0008s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 3750 bytes
At time 7.0008s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 3750 bytes
At time 7.00329s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 7.00329s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 7.4008s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 4000 bytes
At time 7.4008s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 4000 bytes
At time 7.40329s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 7.40329s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 7.8008s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 4250 bytes
At time 7.8008s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 4250 bytes
At time 7.80329s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 7.80329s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 8.201s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 4500 bytes
At time 8.201s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 4500 bytes
At time 8.20349s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 8.20349s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 8.601s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 4750 bytes
At time 8.601s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 4750 bytes
At time 8.60349s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 8.60349s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 9.0012s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 5000 bytes
At time 9.0012s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 5000 bytes
At time 9.00369s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 9.00369s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 9.4012s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 5250 bytes
At time 9.4012s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 5250 bytes
At time 9.40369s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 9.40369s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 9.8012s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 5500 bytes
At time 9.8012s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 5500 bytes
At time 9.80369s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 9.80369s packet sink received 250 bytes from 10.1.2.2 port 49153

运行结果分析:
main函数的开头有设置开关模型一个包的大小为250B=2000bit,数据产生速率为5kb/s。所以缠上一个数据包用的时间就是2kb / 5kb/s=0.4s。所以运行结果中,每个终端产生一个数据包的间隔都是0.4s,关于为啥有的时候间隔比0.4s多,我也不太清楚,也许与开关转换有关系。

  Config::SetDefault ("ns3::OnOffApplication::PacketSize", UintegerValue (250));Config::SetDefault ("ns3::OnOffApplication::DataRate", StringValue ("5kb/s"));

如果把开关时间设置成0.8,0.8意思就是开0.8s关0.8s

  clientHelper.SetAttribute ("OnTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.8]"));clientHelper.SetAttribute ("OffTime", StringValue ("ns3::ConstantRandomVariable[Constant=0.8]"));

运行结果:

At time 2.2s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 250 bytes
At time 2.2s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 250 bytes
At time 2.20249s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 2.20249s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 3.4002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 500 bytes
At time 3.4002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 500 bytes
At time 3.40269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 3.40269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 3.8002s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 750 bytes
At time 3.8002s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 750 bytes
At time 3.80269s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 3.80269s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 5.0004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1000 bytes
At time 5.0004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1000 bytes
At time 5.00289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 5.00289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 5.4004s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1250 bytes
At time 5.4004s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1250 bytes
At time 5.40289s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 5.40289s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 6.6006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1500 bytes
At time 6.6006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1500 bytes
At time 6.60309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 6.60309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 7.0006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 1750 bytes
At time 7.0006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 1750 bytes
At time 7.00309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 7.00309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 8.2006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2000 bytes
At time 8.2006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2000 bytes
At time 8.20309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 8.20309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 8.6006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2250 bytes
At time 8.6006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2250 bytes
At time 8.60309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 8.60309s packet sink received 250 bytes from 10.1.2.2 port 49153
At time 9.8006s on-off application sent 250 bytes to 10.1.1.1 port 50000 total Tx 2500 bytes
At time 9.8006s on-off application sent 250 bytes to 10.1.2.1 port 50000 total Tx 2500 bytes
At time 9.80309s packet sink received 250 bytes from 10.1.1.2 port 49153
At time 9.80309s packet sink received 250 bytes from 10.1.2.2 port 49153

运行结果分析:
开关的逻辑是先关后开,所以开关时间和动作如下,与结果一致

开/关 时间 s 事件
关: 1 -1.8
开: 1.8-2.6 用0.4s产生包,在2.2s发包,用0.4s产生包,2.6s时间不够了没发出去
关: 2.6-3.4
开: 3.4-4.2 3.4s发送已经产生的包,再用0.4s产生包,3.8s发包,再用0.4s产生包,4.2s没发出去
关: 4.2-5.0
开: 5.0-5.8 5.0s发送已经产生的包,再用0.4s产生包,5.4s发包,再用0.4s产生包,5.8s没发出去
关: 5.8-6.6
开: 6.6-7.4 6.6s发送已经产生的包,再用0.4s产生包,7.0s发包,再用0.4s产生包,7.4s没发出去

这里程序运行都是只打开了应用层的Log。如果想看下层的传输可以开启,开启后发现不是只有数据包的交互,ip层和mac层还有其他包的交互(可能是ack之类的,或者建立连接的)

如果把开关的时间设置成0/1那程序啥也不会产生。

NS3初识——应用层ON/OFF模型分析相关推荐

  1. linux i2c adapter 增加设备_LINUX设备驱动模型分析之四 设备模块相关(DEVICE)接口分析...

    本系列前几篇文章链接如下: <LINUX设备驱动模型分析之一 总体概念说明> <LINUX设备驱动模型分析之二 总线(BUS)接口分析> <LINUX设备驱动模型分析之三 ...

  2. 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP

    物联网应用层协议选择和分析--MQTT.CoAP .HTTP.XMPP.SoAP MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早 ...

  3. char添加一个字符_LINUX字符设备驱动模型分析(起始篇)

    在前面几个模块的介绍中,我们主要以vfs为起始,完成了sysfs.设备-总线-驱动模型.platform设备驱动模型.i2c设备驱动模型.spi设备驱动模型的分析.在对这些模块进行分析的时候,我们或多 ...

  4. LINUX设备驱动模型分析之三 驱动(DRIVER)接口分析

    上一章我们分析了bus-driver-device模型中bus接口部分,本章我们将分析driver接口,在bus-driver-device模型中,driver接口是依附于bus上,而不像device ...

  5. 京麦消息中心业务模型分析

    京麦消息中心业务模型分析 京麦消息中心是京麦平台核心业务之一,负责向京麦平台商家用户提供消息推送,ISV消息订阅,以及消息追踪,消息监控,消息统计等功能. 京麦消息中心(以下简称MC)经过4个618的 ...

  6. deeplearning模型分析

    deeplearning模型分析 FLOPs paddleslim.analysis.flops(program, detail=False) 获得指定网络的浮点运算次数(FLOPs). 参数: • ...

  7. 机器学习(12)欠拟合过拟合、模型分析与正则化

    目录 一.欠拟合 二.过拟合 三.模型分析 四.正则化 4-1.L2正则化 4-2.L1正则化 一.欠拟合 机器学习的特征过少,导致预测不准确.(训练集和测试集表现都不好) 解决方法:增加数据的特征数 ...

  8. RFM模型分析与客户细分

    今天偶然看到沈浩老师的文章<数据挖掘应用案例:RFM模型分析与客户细分>(http://shenhaolaoshi.blog.sohu.com/201923838.html),感慨不少.这 ...

  9. 基于深度学习的脑电图识别 综述篇(三)模型分析

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

最新文章

  1. Oracle HowTo:如何使用Oracle case函数
  2. 如何上传应用到百度应用(图解攻略)
  3. Keywords: Flash( Scaleform ) UI
  4. CCIE基础知识之EIGRP 二
  5. C++ 删除字符串的首尾空字符
  6. 哈佛机器人,学会了轻功水上漂
  7. 把html转换成word,怎么把html转换成word
  8. 经验收藏:做网站的一些定律
  9. infopath2007-2013直接连接数据源(Access或Sqlserver)设计表单模板
  10. java分享微博_java_java实现的新浪微博分享代码实例,weibo.java {@link IWeiboShareAPI#handle - phpStudy...
  11. 初入职场的你知道如何向领导邮件汇报工作吗
  12. 基于jsp+mysql+Spring+mybatis的ssm酒店管理系统
  13. Android 一共有多少种动画?准确告诉你!
  14. Spring Framework系统架构
  15. exceljs 导入导出 excel 文件
  16. 二手书交易平台相关调研
  17. 有哪些好书值得一看?
  18. 【IM】极光简单的聊天测试
  19. 学习freertos之点亮led入门(stm32c8t6)
  20. ImmunoChemistry艾美捷细胞内总ROS活性测定方案

热门文章

  1. 配置idea自带的tomcat_Tomcat下载安装并部署到IDEA的教程(附带idea两种热部署设置方法)...
  2. 更改MYSQL 单字段存储最大空间
  3. 不会吧不会吧?真的有人认为程序员很轻松么!如何对抗编码焦虑?
  4. 黑帽seo收徒:黑帽SEO的常见方法以及遇到问题怎么解决
  5. win11打不开应用程序(没有任何反应)
  6. 密码学【java】初探究之springboo集成mybatis,swagger,数字签名
  7. python开发传统蒙古文OCR(一)
  8. 1.1.2版iPhone中文汉化简易使用教程
  9. 什么是同源策略及解决跨域的三种方式
  10. 与爱车在城市中穿梭!维乐坐垫为你护航