[ncl-talk] sub: Closest value function

dale zuri dalezuri at gmail.com
Fri Mar 22 00:33:24 MDT 2019


Thanks!

On Thu, Mar 21, 2019 at 8:14 PM Rashed Mahmood <rashidcomsis at gmail.com>
wrote:

>
> 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/aa47e790/attachment.html>


More information about the ncl-talk mailing list