找到最大数量。在matlab中

时间:2016-11-03 18:48:55

标签: matlab find

我有1901克的价值。我正在积累它作为

xr=[qq] ; %Training and Anomaly Samples in sequence
z=numel(xr);
N=100;
t=zeros(1,z-N+1);
for n5=0:z-N;
x=xr(1+n5:N+n5);
d=max(x);
m1=numel(x);
y=zeros(d,1);
p=zeros(d,d);
    for k=1:m1-1
     y(x(k))=y(x(k))+1;
     p(x(k),x(k+1))=p(x(k),x(k+1))+1;
    end
    p=bsxfun(@rdivide,p,y);
    p(isnan(p))=0;
    b2=sum(log(p(p~=0)));
    [~,~,idx] = unique(x);
    q=prod(hist(idx,1:max(idx))/numel(x));
    l=log(q);
    g1=b2+l;
  t(n5+1)=g1; %log value    
end

在上面的qq中由其他代码生成并且在1到100之间有一个整数,qq长度是2000.这里t在1901年有长度。当我做max(t)时它显示答案。那么如何在前400次迭代中找到最大值。当我做max(t(1:400))时,它显示错误

Subscript indices must either be real positive integers or logicals.  so how his error occurs.

2 个答案:

答案 0 :(得分:1)

我打赌你已经创建了一个名为max的变量,它隐藏了同名函数。

执行clear max然后再试一次?

答案 1 :(得分:0)

编辑:我对您的y(x(k))=y(x(k))+1行感到非常困惑。如果你一步一步走,你的y最终会像你期望的那样结束吗?

执行whos t以确保数组的元素是您期望的类型,这将影响您用于索引的括号。我一直遇到这种情况,而且我不认为我会在没有备忘单的情况下直接把它弄到脑袋里。