Re: interpolation [message #78596 is a reply to message #2184] |
Wed, 07 December 2011 08:42   |
Russell[1]
Messages: 101 Registered: August 2011
|
Senior Member |
|
|
I'm not exactly sure what the issue is, but interpol seems to work
fine?
readcol,'data.dat',depth,temp,salinity,pot_temp,density
thisdepth=findgen(300)*5 ;the values where you want the temperature
-- whose derivative changes sign
thistemp=interpol(temp,depth,thisdepth)
You might add /quad or /lsq for a better fit, or even use a better
spline routine...
Russell
On Dec 7, 8:51 am, anil <akpinar.a...@gmail.com> wrote:
> On Dec 7, 3:46 pm, anil <akpinar.a...@gmail.com> wrote:
>
>
>
>
>
>
>
>
>
>> Hi,
>> I have many ascii files which contain a header , 5 columns of data .
>> Number of rows for each data is different. Here is an example of the
>> data:
>
>> 7.5 14.552 17.698 14.551 12.7623
>> 9.6 14.547 17.700 14.546 12.7648
>> 14.6 14.462 17.713 14.460 12.7903
>> 19.4 14.341 17.737 14.339 12.8307
>> 24.4 14.161 17.780 14.158 12.8962
>> 29.3 13.704 17.921 13.701 13.0851
>> 34.6 12.313 17.986 12.309 13.3670
>> 39.2 9.622 18.062 9.619 13.8134
>> 44.5 8.659 18.165 8.655 14.0121
>> 49.7 8.451 18.194 8.447 14.0590
>> 54.3 8.221 18.257 8.217 14.1343
>> 59.4 7.938 18.324 7.934 14.2180
>> 64.8 7.808 18.441 7.803 14.3237
>> 69.5 7.880 18.617 7.875 14.4536
>> 74.5 7.923 18.924 7.917 14.6890
>> 79.4 8.040 19.190 8.034 14.8840
>> 84.3 8.100 19.372 8.093 15.0196
>> 89.8 8.050 19.613 8.043 15.2137
>> 94.6 8.069 19.781 8.062 15.3429
>> 99.3 8.076 19.922 8.068 15.4524
>> 109.7 8.235 20.314 8.226 15.7404
>> 169.3 8.564 21.193 8.550 16.3880
>> 179.3 8.602 21.269 8.587 16.4428
>> 189.3 8.632 21.327 8.616 16.4844
>> 199.1 8.659 21.378 8.642 16.5210
>> 209.6 8.680 21.424 8.662 16.5544
>> 219.3 8.708 21.482 8.689 16.5963
>> 229.2 8.733 21.527 8.713 16.6283
>> 239.4 8.755 21.570 8.734 16.6592
>> 249.4 8.768 21.617 8.746 16.6944
>> 259.3 8.777 21.649 8.754 16.7183
>> 268.9 8.788 21.678 8.764 16.7397
>> 278.9 8.796 21.700 8.771 16.7559
>> 289.1 8.806 21.733 8.781 16.7805
>> 298.9 8.834 21.764 8.808 16.8013
>> 324.2 8.834 21.813 8.805 16.8398
>> 349.1 8.854 21.864 8.823 16.8773
>> 374.4 8.861 21.896 8.828 16.9017
>> 399.5 8.861 21.916 8.825 16.9176
>> 424.1 8.866 21.935 8.828 16.9321
>> 449.1 8.871 21.958 8.831 16.9497
>> 474.3 8.878 21.982 8.835 16.9678
>> 499.5 8.881 22.005 8.836 16.9857
>> 524.2 8.885 22.028 8.837 17.0034
>> 549.1 8.889 22.048 8.839 17.0188
>> 574.0 8.892 22.072 8.840 17.0375
>> 599.0 8.895 22.100 8.840 17.0592
>> 649.4 8.900 22.137 8.840 17.0881
>> 699.5 8.907 22.169 8.842 17.1128
>> 749.4 8.913 22.195 8.843 17.1329
>> 799.3 8.921 22.215 8.847 17.1481
>> 849.3 8.929 22.230 8.850 17.1595
>> 899.5 8.938 22.246 8.853 17.1714
>> 949.5 8.947 22.258 8.857 17.1803
>> 999.3 8.954 22.266 8.859 17.1863
>> 1049.6 8.965 22.276 8.865 17.1933
>> 1099.1 8.971 22.282 8.866 17.1979
>> 1149.0 8.980 22.288 8.870 17.2021
>> 1198.9 8.989 22.294 8.873 17.2063
>> 1249.3 8.996 22.297 8.875 17.2084
>> 1299.4 9.003 22.301 8.877 17.2113
>> 1349.4 9.011 22.304 8.879 17.2133
>> 1399.0 9.018 22.305 8.881 17.2139
>> 1449.1 9.025 22.308 8.882 17.2160
>> 1499.2 9.033 22.309 8.885 17.2165
>> 1549.2 9.040 22.311 8.886 17.2179
>> 1551.8 9.041 22.311 8.887 17.2178
>
>> The columns are depth,temperature,salinity,potential temperature and
>> density respectively. The depth values are changing in each data set
>> (7.5 is 6.7 and 9.6 is 10 in the next data and so on...). In some data
>> files, depth values end at 300 or 400 etc... . What I want to do is to
>> interpolate these depth values and their corresponding
>> temperature,salinity, etc.. to certain levels i assign
>> [5,10,15,20,25.........200,210,220.... 300,325,350,.....] or to 1m
>> depth levels starting from 5m, such as (5,6,7,......50,....1550). The
>> problem here is with the 2nd and 4th column where the data first
>> descends to a certain level and then starts ascending again. Therefore
>> i can not use function interpol. I have done such an interpolation
>> earlier:
>
>> pval=100; depth value
>> ind=0
>> if (p[0] le pval) then begin
>> while (ind le (nrows-2) and p[ind] le 100) do ind=ind+1
>> tempx(i)=t[ind]-((p[ind]-100)/(p[ind]-p[ind-1])*(t[ind]-t[in d-1]))
>> salx(i)=s[ind]-((p[ind]-100)/(p[ind]-p[ind-1])*(s[ind]-s[ind -1]))
>> potempx(i)=q[ind]-((p[ind]-100)/(p[ind]-p[ind-1])*(q[ind]-q[ ind-1]))
>> denx(i)=d[ind]-((p[ind]-100)/(p[ind]-p[ind-1])*(d[ind]-d[ind -1]))
>> endif
>
>> ; i is the data index( 1st file,2nd file etc..) and nrows is the
>> number of rows, which are assigned earlier in the code.
>
>> with this, I interpolate the values and obtain temperature,salinity
>> etc.., for this case at 100m.
>
>> I think i can find all the values i want with this way, but there
>> should be a much easier way I guess. I need help on this.
>> Regards
>
> My aim here is to obtain a regular data set. And use it to contour
> such a figure:http://argo.jcommops.org/FTPRoot/Argo/Doc/Floats/2008 -03/podens200803...
|
|
|