Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取文本文件中的数据并绘制图形(Matlab)的问题_Matlab_Graph_Normal Distribution - Fatal编程技术网

读取文本文件中的数据并绘制图形(Matlab)的问题

读取文本文件中的数据并绘制图形(Matlab)的问题,matlab,graph,normal-distribution,Matlab,Graph,Normal Distribution,我使用以下代码从两个文本文件收集数据,将它们连接在一起,然后绘制它们。出于某种原因,我似乎得到了两个图,而不是一个,我不知道为什么会发生这种情况 load MODES1.dat; % read data into the MODES1 matrix x1 = MODES1(:,1); % copy first column of MODES1 into x1 y1 = MODES1(:,2); % and second column of MODES1 into

我使用以下代码从两个文本文件收集数据,将它们连接在一起,然后绘制它们。出于某种原因,我似乎得到了两个图,而不是一个,我不知道为什么会发生这种情况

load MODES1.dat;      %  read data into the MODES1 matrix
x1 = MODES1(:,1);     %  copy first column of MODES1 into x1
y1 = MODES1(:,2);     %  and second column of MODES1 into y1

load MODES.dat;      %  read data into the MODES matrix
x = MODES(:,1);      %  copy first column of MODES into x
y = MODES(:,2);      %  and second column of MODES into y

% Joining the two sets of data
endx = [x1;x];
endy = [y1;y];

figure(1)
plot(endx,endy)
xlabel('Unique Threshold Strains','FontSize',12);
ylabel('Probabilities of occurrence','FontSize',12);
title('\it{Unique Values versus frequencies of occurrence}','FontSize',16);


谢谢你,你的问题很简单。Matlab的
plot
命令为参数定义的每个数据点创建一个点,并按照这些点在第一个参数中出现的顺序连接这些点。要了解这种行为,请尝试

x = [0;1;-1;2;-2;3;-3;4;-4;5];
plot(x,x.^2);
你不会得到你所期望的二次函数图

要解决此问题,必须对输入数组进行相同的排序。对一个数组进行排序很简单(
sort(endx)
),但您希望以相同的方式对这两个数组进行排序。Matlab实际上为您提供了一个函数来实现这一点,但它仅适用于矩阵,因此您需要进行一些串联/分离:

input = sortrows( [endx endy] );
endx = input(:,1);
endy = input(:,2);
这将根据第一列(
endx
)将
endy
放在
endx
的右侧,从而对矩阵中的行进行排序。现在,您的输入已正确排序,结果图应仅显示一行。(更准确地说,一条线在某一点上不会回到它原来的位置。)


实现这一点的另一种方法是,根据实际用例和数据来源,构建
x
两部分的平均值,而不是
endx=[x1;x],您将构建
endx=mean([x1x],2)


另一种方法是完全放弃这条线,然后继续下去

plot(endx,endy,'.');


但这只有在数据点彼此非常接近时才有用。

对于相同的x值,可能存在重复值。x和x1的值范围是多少?(即x=1:0.1:100或诸如此类)@鸭子非常感谢。我想我知道为什么会发生这种情况。非常欢迎你
plot(endx,endy,'LineStyle','none');