我在这个matlab程序中犯了错误?

时间:2016-08-11 17:01:36

标签: arrays matlab sorting matrix

X_new的尺寸为5000x1yedge1x50N1x49

现在,我正在尝试运行以下程序:

for i=1:50  
    new = find(X_new>yedge, 1, 'last');
    N(new) = N(new)+1; 
end

但是,如果出现以下错误,Matrix尺寸必须同意'这是什么以及如何解决这个问题..?

1 个答案:

答案 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

请注意discretizehistc以不同方式定义其分档。默认情况下,discretize包括左边框边,但最后一个边框除外,其中包含两个边框边。 histc包含左边缘,但不包括右边缘。最后一个bin包含的标量值等于yedge中的最后一个值。