绘图连接所有数据点而不是线

Plot connects all data points instead of line

我正在训练 ANN,我想绘制结果 - 这样我就可以查看模型是否正确预测数据:

我的代码:

%-----DATA SET-----
x=0:0.08:6*pi;
y=sin(x);
%create noise
a = -.3; b = .3; 
noise = a + (b-a) * rand(1,length(y)); 
%add noise
y_n=y+noise;

%-----SPLIT INTO TRAIN AND TEST-----
p=x;t=y_n;
num = size(p,2);
split_point = round(num*0.7);
seq = randperm(num);
p_train = p(:,seq(1:split_point));
t_train = t(seq(1:split_point));
p_test = p(:,seq(split_point+1:end));
t_test = t(seq(split_point+1:end));

%-----ANN-----
net=newff([0 6*pi],[5 1],{'tansig','purelin'},'traingd','learnp');
net.trainParam.epochs=500; %number of epochs
net=train(net,p_train,t_train); % batch training
output=sim(net,p_test);
%plot ANN
scatter(x, y_n,'x');
hold on;
scatter(p_test,output,'o');

这是我的结果:

但我想要一条平滑的线。如果我这样做 plot(p_test,output) 所有数据点都会像这样连接:

我想我的 output 格式有误,但我不知道如何正确处理。

谢谢。

我认为您需要适当地对 x 和 y 值进行排序。 如果你这样做,情节看起来很好。请参阅以下代码段以及有关如何执行此操作的示例。

%plot ANN
scatter(x, y_n,'x');
hold on;
scatter(p_test,output,'o'); 
[ia,ib] = sort(p_test);
plot(ia,output(ib),'k-');