2016-11-03 2 views
-1

У меня есть 1901 г значений. Я его накопления в т, какнайти максимум нет. in 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, длина кв.кв 2000. Здесь т имеет длину в 1901 году, когда я делаю max(t) тогда это показывая ответ. поэтому, как найти максимальное значение из первых 400 итераций. когда я делаю макс (т (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

EDIT: Я очень смущен о вашей y(x(k))=y(x(k))+1 линии. Если вы шаг за шагом, ваш y в конечном итоге, как вы ожидаете?

Сделайте whos t, чтобы убедиться, что элементы вашего массива - это тип, который вы ожидаете от них, что повлияет на то, какие скобки вы используете для своего индекса. Я все время сталкиваюсь с этим, и я не думаю, что когда-нибудь это получится прямо в моей голове без чит-листа.

1

Бьюсь об заклад, вы создали переменную с именем max, которая маскирует функцию с тем же именем.

Удалить clear max, а затем еще раз попробовать?

+0

да, извините, у меня уже есть max для целых t, а затем я снова использую max для выбранных значений, поэтому возникает ошибка. теперь он показывает нормально. –

Смежные вопросы