[ncl-talk] The rigmost dimension of x must be equal to the rightmost dimension of y

Adam Phillips asphilli at ucar.edu
Wed Sep 6 10:15:23 MDT 2017


Hi Melanie,
As a a reminder please always include ncl-talk on your reply. That way
others can assist or see the conversation in the future.

You stated that you are getting the following message:

fatal:Number of subscripts do not match number of dimensions of
variable,(4) Subscripts used, (3) Subscripts expected
in this line
"eof_regres(ne,:,:) = (/ regCoef_n(eof_ts(ne,:),
x2Anom(time|:,depth|0,latitude|:,longitude|:),0,0)
/)"

In my previous reply I recommended that you remove the depth dimension from
the x1Anom array by index-subscripting the depth dimension with a set 0:
x2Anom = rmMonAnnCycTLL(x2(:,0,:,:))

I would recommend using printVarSummary to take a look at your x2Anom array:
printVarSummary(x2Anom)

You will see that x2Anom is now a 3-dimensional array with dimensions time
x latitude x longitude, as the depth dimension has been removed. Change
this:
eof_regres(ne,:,:) = (/ regCoef_n(eof_ts(ne,:),
x2Anom(time|:,depth|0,latitude|:,longitude|:),0,0)
/)
to this:
eof_regres(ne,:,:) = (/ regCoef_n(eof_ts(ne,:), x2Anom,0,0) /)

There is no need to reorder the x2Anom dimensions, as you are using
regCoef_n and can choose which dimension regCoef should operate on. In this
case time is the 0th dimension of x2Anom, and you are already correctly
specifying it.

Hope that helps. If you have further questions please respond to the
ncl-talk email list.
Adam



>
> On Fri, Sep 1, 2017 at 7:04 PM, Adam Phillips <asphilli at ucar.edu> wrote:
>
>> Hi Melanie,
>> clmMonTLL and calcMonAnomTLL expect the input arrays to be 3-dimensional
>> and ordered time x latitude x longitude. Your x2 array is a 4-dimensional
>> array. Try doing this to eliminate the depth dimension:
>>  x2Clm   = clmMonTLL(x2(:,0,:,:))                             ;
>> (12,lat,lon;)
>> x2Anom  = calcMonAnomTLL(x2(:,0,:,:), xClm)                ; (time,
>> lat,lon)
>>
>> alternatively, you can use rmMonAnnCycTLL to do the same thing:
>> x2Anom = rmMonAnnCycTLL(x2(:,0,:,:))
>>
>> https://www.ncl.ucar.edu/Document/Functions/Contributed/
>> rmMonAnnCycTLL.shtml
>>
>> Hope that helps!
>> Adam
>>
>>
>> On Fri, Sep 1, 2017 at 12:58 PM, Melanie O' hanoly <mel.hanoly at gmail.com>
>> wrote:
>>
>>> Hi Adam..
>>>
>>> Thank you so much for help me..
>>> But  now have some problems in calculating anomalies
>>>
>>> Variable: x
>>> Type: double
>>> Total Size: 29760000 bytes
>>>             3720000 values
>>> Number of Dimensions: 3
>>> Dimensions and sizes: [time | 372] x [lat | 100] x [lon | 100]
>>> Coordinates:
>>>             time: [   0..16260480]
>>>             lat: [-89.09999999999999..89.10000000000002]
>>>             lon: [   0..356.4]
>>> Number Of Attributes: 2
>>>   _FillValue : -999000000
>>>   missing_value : -999000000
>>>
>>> Variable: x2
>>> Type: float
>>> Total Size: 14880000 bytes
>>>             3720000 values
>>> Number of Dimensions: 4
>>> Dimensions and sizes: [time | 372] x [depth | 1] x [latitude | 100] x
>>> [longitude | 100]
>>>
>>> fatal:Number of dimensions in parameter (0) of (clmMonTLL) is (4), (3)
>>> dimensions were expected
>>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 86 in
>>> file eof.ncl
>>>
>>> fatal:Number of dimensions in parameter (0) of (calcMonAnomTLL) is (4),
>>> (3) dimensions were expected
>>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 88 in
>>> file eof.ncl
>>>
>>> This is my script
>>>
>>> "; ==============================================================
>>> ; compute climatology and Anomalies                      2 file
>>> ; =============================================================
>>>  (86)  x2Clm   = clmMonTLL(x2)                             ;
>>> (12,lat,lon;)
>>>  (87)
>>>  (88)  x2Anom  = calcMonAnomTLL(x2, xClm)                ; (time,
>>> lat,lon)
>>>
>>>   printVarSummary(x2Anom)
>>>    printMinMax(x2Anom, True)
>>> ; ================================================================="
>>>
>>>
>>>
>>> On Tue, Aug 22, 2017 at 5:42 PM, Adam Phillips <asphilli at ucar.edu>
>>> wrote:
>>>
>>>> Hi Melanie,
>>>> regCoef operates on the rightmost dimensions of the two input arrays,
>>>> and expects those two rightmost dimensions to have the same size. See the
>>>> documentation here:
>>>> https://www.ncl.ucar.edu/Document/Functions/Built-in/regCoef-1.shtml
>>>> referring specifically to the Arguments - y section near the top.
>>>>
>>>> Thus, assuming your EOF/principal component timeseries was computed
>>>> over the TIME1 dimension, you should change this:
>>>> eof_regres(ne,:,:) = (/ regCoef(eof_ts(ne,:),
>>>> x2(TIME1|:,DEPTH1_1|:,LAT|:,LON|:))/)
>>>> to this:
>>>> eof_regres(ne,:,:) = (/ regCoef(eof_ts(ne,:),
>>>> x2(DEPTH1_1|0,LAT|:,LON|:,TIME1|:))/)
>>>> (Note that I also changed "DEPTH1_1|:" to "DEPTH1_1|0" so that the
>>>> first and only index is chosen, that way the array returned to the lefthand
>>>> side of the equal sign will be dimensioned lat (100) x lon (100).)
>>>>
>>>> If you were using regCoef_n, you could do this:
>>>> eof_regres(ne,:,:) = (/ regCoef_n(eof_ts(ne,:),
>>>> x2(TIME1|:,DEPTH1_1|0,LAT|:,LON|:),0,0) /)
>>>>
>>>> The last two arguments represent the dimension number to operate on for
>>>> the eof_ts and x2 arrays. In this specific case, you are index subscripting
>>>> eof_ts from a 2D array to a 1D array, and thus regCoef_n will only see a 1D
>>>> array and the 1st dimension should be operated on. Finally, you are
>>>> dimension reordering x2, and you don't really need to do this if you were
>>>> to use regCoef_n. You just need to indicate the correct dimension to
>>>> operate on with the last provided argument.
>>>>
>>>> Hope that all helps. If you have any further questions please respond
>>>> to the ncl-talk email list.
>>>> Adam
>>>>
>>>> On Tue, Aug 22, 2017 at 2:19 PM, Melanie O' hanoly <
>>>> mel.hanoly at gmail.com> wrote:
>>>>
>>>>> *Dear NCL users, I just have a little knowledge on NCL. So, could anyone help me?*
>>>>>
>>>>> *I have two data with 372 timestep, one has 3D and the other 4D, someone please help me with this error?*
>>>>>
>>>>> *"**fatal:regCoef: The rightmost dimension of x must be equal to the rightmost dimension of y"*
>>>>>
>>>>> *The summary is bellow*
>>>>>
>>>>>
>>>>> *This is the scrip line error "; Regress;
>>>>> =================================================================
>>>>> eof_regres = eof ; create an array w meta data do ne=0,neof-1
>>>>> eof_regres(ne,:,:) = (/ regCoef(eof_ts(ne,:),
>>>>> x2(TIME1|:,DEPTH1_1|:,LAT|:,LON|:))/) end do printVarSummary(eof_regres)
>>>>> printMinMax(eof_regres, True)*
>>>>> *"*
>>>>>
>>>>>
>>>>> *If i use regCoef_n, shows this error "fatal:syntax error: function
>>>>> regCoef_n expects 4 arguments, got 2"*
>>>>> Summary
>>>>> Copyright (C) 1995-2017 - All Rights Reserved
>>>>>  University Corporation for Atmospheric Research
>>>>>  NCAR Command Language Version 6.4.0
>>>>>  The use of this software is governed by a License Agreement.
>>>>>  See http://www.ncl.ucar.edu/ for more details.
>>>>>
>>>>> Variable: x
>>>>> Type: double
>>>>> Total Size: 29760000 bytes
>>>>>             3720000 values
>>>>> Number of Dimensions: 3
>>>>> Dimensions and sizes: [time | 372] x [lat | 100] x [lon | 100]
>>>>> Coordinates:
>>>>>             time: [   0..16260480]
>>>>>             lat: [-89.09999999999999..89.10000000000002]
>>>>>             lon: [   0..356.4]
>>>>> Number Of Attributes: 2
>>>>>   _FillValue : -999000000
>>>>>   missing_value : -999000000
>>>>>
>>>>> Variable: x2
>>>>> Type: double
>>>>> Total Size: 29760000 bytes
>>>>>             3720000 values
>>>>> Number of Dimensions: 4
>>>>> Dimensions and sizes: [TIME1 | 372] x [DEPTH1_1 | 1] x [LAT | 100] x
>>>>> [LON | 100]
>>>>> Coordinates:
>>>>>             TIME1: [1928.06849316134..1958.561643829649]
>>>>>             DEPTH1_1: [17.5..17.5]
>>>>>             LAT: [-89.1..89.1]
>>>>>             LON: [ 0..356.4]
>>>>> Number Of Attributes: 4
>>>>>   long_name : DIC[L=1:372]
>>>>>   _FillValue : -9.999999999999999e+33
>>>>>   missing_value : -9.999999999999999e+33
>>>>>   history : From dic_uvic
>>>>>
>>>>> Variable: eof_ts
>>>>> Type: double
>>>>> Total Size: 2976 bytes
>>>>>             372 values
>>>>> Number of Dimensions: 2
>>>>> Dimensions and sizes: [evn | 1] x [time | 372]
>>>>> Coordinates:
>>>>>             evn: [1..1]
>>>>>             time: [   0..16260480]
>>>>> Number Of Attributes: 3
>>>>>   ts_mean : 1.196080271862835e-13
>>>>>   matrix : covariance
>>>>>   _FillValue : -999000000
>>>>>
>>>>> fatal:regCoef: The rightmost dimension of x must be equal to the
>>>>> rightmost dimension of y
>>>>> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 128
>>>>> in file eof_cfsr.ncl
>>>>>
>>>>> Variable: eof_regres
>>>>> Type: double
>>>>> Total Size: 80000 bytes
>>>>>             10000 values
>>>>> Number of Dimensions: 3
>>>>> Dimensions and sizes: [evn | 1] x [lat | 100] x [lon | 100]
>>>>> Coordinates:
>>>>>             evn: [1..1]
>>>>>             lat: [-89.09999999999999..89.10000000000002]
>>>>>             lon: [   0..356.4]
>>>>> Number Of Attributes: 6
>>>>>   _FillValue : -999000000
>>>>>   method : transpose
>>>>>   matrix : covariance
>>>>>   pcvar : 13.29658
>>>>>   eval : 634047.31020702
>>>>>   eval_transpose : 24386.43500796231
>>>>> (0)
>>>>> (0) min=-0.04332826535433597   max=0.02833814180143831
>>>>>
>>>>>
>>>>> *Melanie O'Hanoly*
>>>>> *Oceangrapher*
>>>>> *PhD canditate at Alfred Wegener Institute Helmholtz Centre for Polar
>>>>> and Marine Research*
>>>>>
>>>>> _______________________________________________
>>>>> ncl-talk mailing list
>>>>> ncl-talk at ucar.edu
>>>>> List instructions, subscriber options, unsubscribe:
>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Adam Phillips
>>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726 <(303)%20497-1726>
>>>>
>>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>>
>>>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>>
>> --
>> Adam Phillips
>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726 <(303)%20497-1726>
>>
>> <http://www.cgd.ucar.edu/staff/asphilli>
>>
>
>


-- 
Adam Phillips
Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/   303-497-1726

<http://www.cgd.ucar.edu/staff/asphilli>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170906/21b480cb/attachment.html>


More information about the ncl-talk mailing list