2016-11-03 46 views
-1

我有1901克的值。我積累它在T作爲找到最大號碼。在matlab中

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次迭代中找到最大值。當我做最大(T(1:400)),其示值誤差

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

您確定您的索引從1開始?我運行了代碼,它適用於我。唯一的問題可能是從1:60開始的一些指數缺失值 – Harjatin

+0

t(n + 1)= g,並且n從0開始,所以t的值從1開始並且所有指數都存在。 –

+0

你能用完整的代碼更新問題嗎?我不能在這裏解決這個問題,因爲如果n是一個整數並且所有的索引都存在,這可以正常工作。 – Harjatin

回答

0

編輯:我是你的y(x(k))=y(x(k))+1線很困惑。如果你一步一步走,你的y結果如你所願?

執行whos t以確保數組的元素是您期望它們的類型,這將影響您用於索引的括號。我一直遇到這種情況,而且我不認爲我會在沒有備忘錄的情況下直接在腦海中得到它。

1

我敢打賭,你已經創建了一個名爲max的變量,它掩蓋了同名的函數。

clear max然後再試一次?

+0

是的,對不起,我已經有了整個t的最大值,然後我再次使用選定值的最大值,所以出現錯誤。現在它表現良好。 –