how to solve Error using .' Transpose on ND array is not defined. Use PERMUTE instead. Error in interp2 (line 122) V = V.';?

5 vues (au cours des 30 derniers jours)
Hello I want to regrid my netcdf file based on lat and lon from 0.5 to 1 degree. now I faced this error.
Can anyone help me? here is my code:
filename='precip.mon.total.v2018.nc';
ncdisp(filename)
lat = ncread(filename,'lat');
lon = ncread(filename,'lon');
precip = ncread(filename,'precip');
t = ncdateread(filename,'time');
ds = 0.25 ;
loni = min(lon):ds:max(lon) ;
lati = min(lat):ds:max(lat) ;
[Loni,Lati] = meshgrid(loni,lati) ;
size(lat)
size(lon)
size(precip)
newpreceip=interp2(lat, lon, precip, loni, lati)
and that is wath appears in my comand window:
Source:
C:\Users\Behzad\Desktop\precip.mon.total.v2018.nc
Format:
netcdf4_classic
Global Attributes:
Original_Source = 'http://www.dwd.de/en/FundE/Klima/KLIS/int/GPCC/GPCC.htm
is the webpage and the data is at ftp://ftp.dwd.de/pub/data/gpcc/download.html'
Reference = 'Users of the data sets are kindly requested to give feed back and to refer to GPCC publications on this webpage: http://www.dwd.de/bvbw/appmanager/bvbw/dwdwwwDesktop/?_nfpb=true&_pageLabel=_dwdwww_klima_umwelt_datenzentren_wzn&T12404518261141645246564gsbDocumentPath=Content%2FOeffentlichkeit%2FKU%2FKU4%2FKU42%2Fteaser__product__access.html&_state=maximized&_windowLabel=T12404518261141645246564&lastPageLabel=_dwdwww_klima_umwelt_datenzentren_wzn'
original_source = 'ftp://ftp-anon.dwd.de/pub/data/gpcc/html/fulldata_download.html'
Conventions = 'CF 1.0'
dataset_title = 'Global Precipitation Climatology Centre (GPCC)'
References = 'https://www.esrl.noaa.gov/psd/data/gridded/data.gpcc.html'
title = 'GPCC Full Data Reanalysis Version 2018 0.5x0.5 Monthly Total'
history = 'Created 09/2018 based on V2018 data obtained via ftp'
data_modified = '2019-03-12'
_NCProperties = 'version=2,netcdf=4.6.3,hdf5=1.10.5'
Dimensions:
lat = 360
lon = 720
nbnds = 2
time = 1512 (UNLIMITED)
Variables:
lat
Size: 360x1
Dimensions: lat
Datatype: single
Attributes:
long_name = 'Latitude'
units = 'degrees_north'
standard_name = 'latitude'
axis = 'Y'
coordinate_defines = 'point'
actual_range = [89.75 -89.75]
lon
Size: 720x1
Dimensions: lon
Datatype: single
Attributes:
long_name = 'Longitude'
units = 'degrees_east'
standard_name = 'longitude'
actual_range = [0.25 359.75]
axis = 'X'
coordinate_defines = 'point'
time
Size: 1512x1
Dimensions: time
Datatype: double
Attributes:
long_name = 'Time'
units = 'days since 1800-1-1 00:00:00'
delta_t = '0000-01-00 00:00:00'
avg_period = '0000-01-00 00:00:00'
standard_name = 'time'
axis = 'T'
coordinate_defines = 'start'
actual_range = [33237 79227]
precip
Size: 720x360x1512
Dimensions: lon,lat,time
Datatype: single
Attributes:
missing_value = -9.969209968386869e+36
units = 'mm'
var_desc = 'Precipitation'
level_desc = 'Surface'
parent_stat = 'Observations'
long_name = 'GPCC Monthly total of precipitation'
valid_range = [0 8000]
statistic = 'Total'
level = 'Surface'
actual_range = [0 4552.4302]
dataset = 'GPCC Precipitation 0.5degree V2018 Full Reanalysis'
ans =
360 1
ans =
720 1
ans =
720 360 1512
Error using .'
Transpose on ND array is not defined. Use PERMUTE instead.
Error in interp2 (line 122)
V = V.';
Error in test100 (line 25)
newpreceip=interp2(lat, lon, precip, loni, lati)

Réponse acceptée

Matt J
Matt J le 6 Oct 2019
Modifié(e) : Matt J le 6 Oct 2019
Because precip is not a 2D array, interp2 is the wrong tool. One alternative:
F=griddedInterpolant({lat,lon,t},precip);
newpreceip=F({lati,loni,t});
  11 commentaires
Matt J
Matt J le 7 Oct 2019
This should solve it:
F=griddedInterpolant({lon,flip(lat),t},flip(precip,1));
newpreceip=F({loni,lati,t});
BN
BN le 7 Oct 2019
Dear Matt J
Thank you for your precious help.
This solved my problem.
Best Regards

Connectez-vous pour commenter.

Plus de réponses (1)

Soumik Ghosh
Soumik Ghosh le 28 Jan 2020
I followed your answer on mathwork but cannot solve my issue with data. Could you help me to fix the error? I have used the following code:
File='rf.1998.2010.nc'
rf=double(ncread(File, 'rf'));
time=double(ncread(File, 'time'));
lon=double(ncread(File, 'lon'));
rain=rf'
rain(isinf(rain)|isnan(rain))=0;
F=griddedInterpolant({lon,flip(lat),time},flip(rain,1));
The following error is showing:
Error using griddedInterpolant
The grid vectors must be strictly monotonically increasing.
==============
Name Size Bytes Class Attributes
lat 252x1 2016 double
lon 317x1 2536 double
rain 317x252x4748 3034313856 double
time 4748x1 37984 double
===============
Best Regards,
Soumik
  3 commentaires
Rik
Rik le 28 Jan 2020
Since this isn't an answer, the content should be merged with the separately posted question and then deleted.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by