这个问题是关于使用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
答案 0 :(得分:1)
正如其他人在评论中指出的那样,错误只是说明了这一点
newdata
与size
的{{1}}不同,因此执行binedges
会产生错误。
我的猜测是该行
newdata > binedges
应该是
binEdges = linspace(botEdge, topEdge, numBins+1)
假设您的binEdges = linspace(botEdge, topEdge, numBins)
数组长度为newdata
如果这个假设是假的,那么你的问题是你是在任意设置一些与numBins
的长度不对应的箱子。
您应该从数据中获取数字,而不是使用幻数。 (即代替newdata
也许你应该做numbins = 40
)