[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Min function problem
From: |
Juan Pablo Carbajal |
Subject: |
Re: Min function problem |
Date: |
Sun, 12 Jan 2014 14:39:22 +0100 |
On Sun, Jan 12, 2014 at 2:01 PM, Plamen Bokov <address@hidden> wrote:
> Hi Kai
>
> I am trying to do some spectral analysis. Say A is the time-frequency matrix
> (n is the length of the time dimension, A=matrix(frequency, time). For each
> time point there are no-more than 3 non zero values in the frequency
> dimension.
> I try to group some values together. That is values are considered to be
> part of the same group when the frequency proximity of values are within
> (seuil_frequence);
>
> There are also some coditions on the duration of a groupe (more than delta
> and less than Delta). I am couting the time duration in compteur, with an
> initial setting compteur=zeros(n,3).
> I am saving the groups in the matrix C.
>
> for i=1:(n-delta)
> index1=find(A(:,i));
> if length(index1)==0
> C(:,i)=0;
> else
> for j=(i+1):(n-delta)
> index2=find(A(:,j));
> if length(index2)~=0
>
>
> for j1=1:length(index1)
> for j2=1:length(index2)
> B(j1,j2)=abs(f(index1(j1))-f(index2(j2)));
> end
> [minB(j1), iminB(j1)]=min(B(j1,:));
> if ((minB(j1)<=seuil_frequence) &
> (compteur(i,j1)<=Delta))
>
> C(index2(iminB(j1)),j)=A(index2(iminB(j1)),j);
> compteur(i,j1)=compteur(i,j1)+1;
> elseif ((minB(j1)>seuil_frequence) &
> (compteur(i,j1)>=delta))
> continue;
> elseif (((minB(j1)<=seuil_frequence) &
> (compteur(i,j1)>Delta)) | ((minB(j1)>seuil_frequence) &
> (compteur(i,j1)<delta)))
> for j3=i:j
> C(:,j3)=0;
> end
>
>
>
> end
> end
> else
> C(:,j)=0;
> break;
> end
>
> end
>
> end
>
> end
>
>
> Thank you for your answer, I hope you can see more clearly my problem.
> Best regards
> Plamen
>
>
> 2014/1/12 Kai Torben Ohlhus <address@hidden>
>>
>> On Sun, Jan 12, 2014 at 3:51 AM, plamen <address@hidden> wrote:
>>>
>>> Hello,
>>> I am having the following problem
>>>
>>> for j1=1:length(index1)
>>> for j2=1:length(index2)
>>>
>>> B(j1,j2)=abs(f(index1(j1))-f(index2(j2)));
>>> end
>>> [minB(j1), iminB(j1)]=min(B(j1,:));
>>> if (minB(j1)<=some_value)
>>>
>>> C(index2(iminB(j1)),j)=A(index2(iminB(j1)),j);
>>>
>>>
>>> and when I run the script I am getting an error message A(I): index out
>>> of
>>> bounds; value 2 out of bound 1
>>> on the line where I call index(iminB(j1))
>>>
>>> How is that possible, whereas the values of iminB are chosen between the
>>> index of index2?
>>> Thanks for your advice
>>> Plamen
>>>
>>>
>>>
>>> --
>>> View this message in context:
>>> http://octave.1599824.n4.nabble.com/Min-function-problem-tp4660968.html
>>> Sent from the Octave - General mailing list archive at Nabble.com.
>>> _______________________________________________
>>> Help-octave mailing list
>>> address@hidden
>>> https://mailman.cae.wisc.edu/listinfo/help-octave
>>
>>
>> Hello Plamen,
>>
>> can you provide a minimal and executable code sample (with e.g. your input
>> data, as I have no clue about the dimensions of these values).
>>
>> Best,
>> Kai
>
>
>
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://mailman.cae.wisc.edu/listinfo/help-octave
>
Have you tried adding "keyboard" to your script, run it and inspect it
line by line. The commands for the debugger can be found here
http://www.gnu.org/software/octave/doc/interpreter/Debug-Mode.html#Debug-Mode