[ncl-talk] sub: Closest value function

Rashed Mahmood rashidcomsis at gmail.com
Thu Mar 21 22:14:16 MDT 2019


Try the following:


index=abs(Allens-sotmod)

vl=min(index)

do kj=0,dimsizes(Allens)-1

 if (index(kj) .eq. vl) then

    print(kj)

    index_obs(kj)=sotobs

 end if

end do

The way you were trying to construct a loop would always have one value for
the variable "index" after every iteration, so you would need to define the
variable "index" outside the loop.
hope that helps.
Cheers,
Rashed



On Thu, Mar 21, 2019 at 9:49 AM dale zuri <dalezuri at gmail.com> wrote:

> Hi ncl user,
> I have been trying to reproduce the result without using the closest
> function. But the result is not the same? Could someone help me?
> I would appreciate the help and time.
>
> Thanks
>
> ;do kj=0,dimsizes(Allens)-1
>
> ;index =
> closest_val(Allens(0),sotmod);;;;;;;;;;;;;;;;;;;(value2check,array2check)
>
> ;print(index)
>
> ;return
>
> ;index1(kj)=index
>
> ;index_obs(kj)=sotobs(index)
>
> ;end do
>
>
> do kj=0,dimsizes(Allens)-1
>
> index=abs(Allens(kj)-sotmod)
>
> vl=min(index)
>
>  if index(kj) .eq. vl then
>
>     print(kj)
>
>     index_obs(kj)=sotobs
>
>  end if
>
> end do
>
> On Thu, Mar 21, 2019 at 5:15 AM Rashed Mahmood <rashidcomsis at gmail.com>
> wrote:
>
>> the if statement inside the loop should be:
>>
>>   do i=0,3
>>     if (xAbsDif(i).eq.xMinVal) then
>>        print(i)
>>     end if
>>   end do
>>
>> Cheers
>> Rashed
>>
>>
>>
>>
>>
>> On Thu, Mar 21, 2019 at 3:09 AM dale zuri <dalezuri at gmail.com> wrote:
>>
>>> Hi Ncl user,
>>>
>>> I would like to implement the closest value function without using ind
>>> function.  I would appreciate any suggestion.
>>>
>>> value2check = 18.382
>>>
>>> array2check = (/18.0001 ,18.5888, 18.01, 18.5/)
>>>
>>> index       = closest_val(value2check,array2check)
>>>
>>> print(index)
>>>
>>> xAbsDif = abs(value2check-array2check)
>>>
>>> xMinVal = min(xAbsDif)
>>>
>>> iClose  = (ind(xAbsDif.eq.xMinVal))
>>>
>>> print(iClose)
>>>
>>>
>>> :::::without using ind;;;;;
>>>
>>> do i=0,3
>>>
>>> if any(xAbsDif(i)) .eq. any(xMinVal) then
>>>
>>> print(i) ;; it's not giving right answer
>>>
>>> end if
>>>
>>> end do
>>>
>>>
>>> Thanks
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190321/0318c63a/attachment.html>


More information about the ncl-talk mailing list