任何人都可以帮助我在我的matlab编程中犯错误吗?

时间:2016-07-19 11:14:10

标签: matlab binning

这个问题是关于使用matlab对数据进行分类。我有两个数据集。在一个数据集中,我有x(表示速度)和y(表示功率)值,我将其分类并计算出平均std,edge和h值(参见代码)现在借助于我想要识别的计算并传递我的输入数据(这里的代码,这个是新数据)到它们所属的特定bin(我已经准备好在这里给出下面的代码),.在下面的代码中,newdata将包含与bin匹配的新数据集。请帮助我在哪里犯错误或修改它我会得到以下错误:

Error using  > 
Matrix dimensions must agree.
Error in Binning_Online (line 23)
      newdatabin=find(newdata>binEdges,1,'last'); %this is the bin number where the new data goes in

代码:

x= load speed;
y= load power;
newdata= load new_speed;
topEdge = 20; % upper limit
botEdge = 5;  % lower limit
numBins = 40; % define number of bins 
[N,edges,bins] = histcounts(y_vector,numBins);
Pow_means = [];   speed_means = [];
for n = 1:numBins;
   Pow_means(n,1) = mean(x_vector(bins==n,1));  % for each bins mean value  calculation.
   speed_means(n,1) = mean(y_vector(bins==n,1));  % for each bins mean value calculation.
   pow_std(n,1) = std(x_vector(bins==n,1));       % for Standard deviation calculation
    binEdges = linspace(botEdge, topEdge, numBins+1);

   newdatabin= find(newdata>binedges,1,'last'); %this is the bin number where the new data goes in
   h(newdatabin)=h(newdatabin)+1;

end

1 个答案:

答案 0 :(得分:1)

正如其他人在评论中指出的那样,错误只是说明了这一点 newdatasize的{​​{1}}不同,因此执行binedges会产生错误。

我的猜测是该行

newdata > binedges

应该是

binEdges = linspace(botEdge, topEdge, numBins+1)

假设您的binEdges = linspace(botEdge, topEdge, numBins) 数组长度为newdata

如果这个假设是假的,那么你的问题是你是在任意设置一些与numBins的长度不对应的箱子。 您应该从数据中获取数字,而不是使用幻数。 (即代替newdata也许你应该做numbins = 40