X_new
的尺寸为5000x1
,yedge
为1x50
,N
为1x49
。
现在,我正在尝试运行以下程序:
for i=1:50
new = find(X_new>yedge, 1, 'last');
N(new) = N(new)+1;
end
但是,如果出现以下错误,Matrix尺寸必须同意'这是什么以及如何解决这个问题..?
答案 0 :(得分:0)
如果您不需要重新发明轮子,MATLAB的内置discretize
将返回bin索引:
X = 1:10;
yedge = [0 4 8 10];
binidx = discretize(X, yedge);
返回:
binidx =
1 1 1 2 2 2 2 3 3 3
R2015a中引入了 discretize
,但旧版本的MATLAB有histc
:
X = 1:10;
yedge = [0 4 8 10];
[~, binidx] = histc(X, yedge);
返回:
binidx =
1 1 1 2 2 2 2 3 3 4
请注意discretize
和histc
以不同方式定义其分档。默认情况下,discretize
包括左边框边,但最后一个边框除外,其中包含两个边框边。 histc
包含左边缘,但不包括右边缘。最后一个bin包含的标量值等于yedge
中的最后一个值。