Plot连接所有数据点而不是行

时间:2016-02-20 22:04:38

标签: data-visualization matlab

我正在训练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');

这是我的结果: enter image description here

但我希望一条流畅的线。如果我plot(p_test,output)所有数据点都像这样连接:

enter image description here

我想我的格式错误output,但我无法弄清楚如何正确地做到这一点。

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为您需要适当地对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-');