2016-11-03 16 views
-1

私は1901 gの値を持っています。私は他のコードによって生成された上記のQQで最大数を見つけてください。 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 

としてトンで、それを蓄積し、100から1の間の整数を持っています、QQの長さはここに2000年である私はそれが、その後max(t)をやっているときtは1901の長さを持っています答えを示しています。最初の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

EDITを示す:私は最大(400)T(1):やっているとき、私はあなたのy(x(k))=y(x(k))+1ラインについて非常に混乱しています。あなたがステップバイステップで行く場合、あなたのyは期待通りに終わるのですか?

whos tを実行して、配列の要素が予想どおりの型であることを確認します。これにより、インデックスに使用する角かっこに影響します。私はいつもこれにぶつかり、チートシートなしで私の頭の中でこれをまっすぐにするつもりはないと思う。

1

同じ名前の関数をマスクするmaxという変数を作成したと思います。

clear maxを実行してから、もう一度お試しください。

+0

はい、申し訳ありませんが、私は既にtの全部を持っています。今それはokを示しています。 –

関連する問題