matlab udp server 并返回数据给客户端

本文介绍了一个使用Matlab实现的简单UDP服务器程序,该服务器能够接收客户端发送的数据,利用神经网络进行预测处理,并将结果反馈给客户端。文章提供了完整的代码示例。

matlab 一个UDP server 简单实现。

就一个简单的udp 服务端接收客户端数据并返回结果给客户端,让我从博客到官网文档,没一个符合的,matlab 文档也是醉了。上代码:

功能简介:

代码是udp服务端,接收客户端传来的参数,神经网络预测输出,并把结果返回给客户端。

clc
clear all
close all

packet_size = 1000;                % Size of 1 Packet
buffer_size = 1*packet_size;     % Buffer to store 1024 packets each of Packet_Size
buffer_read_count = 10;          % How many times the buffer must be read 

%u=udp('127.0.0.1','RemotePort',4660,'Localport',9090);
u=udp('127.0.0.1','RemotePort',4660,'Localport',9090);

set(u,'DatagramTerminateMode','off');   
set(u, 'InputBufferSize', buffer_size);     
set(u,'Timeout',0.5); 

fopen(u);
x=tic;
net=BPtrain()

while 1
    [a, count,info,addr,port] = fread(u,buffer_size);  % 这里是获取客户端地址端口的关键
    if count>0
        try
        data = sprintf("%s",a);
        ndata=str2num(data);
        mdata= reshape(ndata,2,1);
        %网络预测输出
        an=sim(net,mdata);
        disp(an);
        u.RemoteHost=addr;
        u.RemotePort=port;
        fwrite(u,num2str(an));
       % u.send(an,addr,port)
        catch err
          disp(err)
        end
            
    end
end

fclose(u);
delete(u);

t=toc(x);

bw = (buffer_read_count*buffer_size*8)/t; %Speed / BW of UDP Reception

function  s = BPtrain()
 % 清空环境变量
clc
clear

%此处以后代码可以忽略不看,就是计算处理收到的数据用简单神经网络预测

%% 训练数据预测数据提取及归一化
%下载输入输出数据
load  input8 ;
load output8;
a=input8;
b=output8;%乘10后单位为频差hz*10
% b=b*10e7;
b=b';
%从1到2000间随机排序
% k=rand(1,1344);
% [m,n]=sort(k);
% f0=10000000;
%找出训练数据和预测数据
% input_train=a(n(1:1244),:)';
% output_train=b(n(1:1244));
% input_test=a(n(1245:1344),:)';
% output_test=b(n(1245:1344));
input_train=a(1:3840,:)';%一个月后的40数据训练1:2016   1:7680   1:7680
output_train=b(1:3840);
input_test=a(3841:3936,:)';%后两天预测   7681:787   27681:7872
output_test=b(3841:3936);

%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);

%% BP网络训练
% %初始化网络结构

net=newff(inputn,outputn,19);
%因为newff默认训练、确认、测试样本比例,所以要对其进行修改
net.divideParam.trainRatio = 1;
net.divideParam.valRatio = 0;
net.divideParam.testRatio = 0;

net.trainParam.epochs=1000;
net.trainParam.lr=0.01;
net.trainParam.goal=0.0000000000001;

%网络训练
net=train(net,inputn,outputn);
s=net
end

function s=RBFtrain()
clear;
clc;
%% 构造样本集
% 数据个数
load  input8 ;
load output8;
a=input8;
b=output8;
b=b';
P_train=a(1:2880,:)';%    1:7680
T_train=b(1:2880);%
P_test=a(2881:2976,:)';%   7681:7872
T_test=b(2881:2976);
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(P_train);
[outputn,outputps]=mapminmax(T_train);
% %% 划分训练、测试样本
% 
% 
% P_train = Z_n(1:96, 1:7680);%
% T_train = Z_n(97, 1:7680);
% 
% P_test = Z_n(1:96, 7681:7872);
% T_test = Z_n(97, 7681:7872);
%%
N =size(P_test,2);
%% III. RBF神经网络创建及仿真测试
%%
% 1. 创建网络
net = newrb(inputn,outputn,0.0000000000001,1,130,10);

%%
% % 2. 仿真测试
% T_sim = sim(net,P_test);

%预测数据归一化
inputn_test=mapminmax('apply',P_test,inputps);
s=net
end


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值