a small problem with interpolation
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Dear all,
I have
A={ [NaN] [ NaN] [ NaN] [ NaN] [ NaN] [ NaN]
[ NaN] [ NaN] [ NaN] [ NaN] [ NaN] [ NaN]
[ NaN] [ NaN] [ NaN] [ NaN] [ NaN] [ NaN]
[ NaN] [ NaN] [ NaN] [ NaN] [ NaN] [ NaN]
[4.8455] [0.8076] [0.0864] [ 0.1917] [ 0.5184] [ 0.4275]
[5.1224] [0.8537] [0.3679] [ 0.7887] [ 2.2073] [ 1.8883]
[5.1932] [0.8656] [0.6473] [ 1.3217] [ 3.8835] [ 3.3626]
[5.2023] [0.8671] [0.8252] [ 1.6275] [ 4.9510] [ 4.2929]
[5.1816] [0.8636] [0.7828] [ 1.6663] [ 4.6970] [ 4.0567]
[5.1818] [0.8636] [0.6551] [ 1.4768] [ 3.9308] [ 3.3937]
[5.1937] [0.8656] [0.6070] [ 1.4121] [ 3.6422] [ 3.1528]
[5.1665] [0.8611] [0.6443] [ 1.5050] [ 3.8656] [ 3.3284]
[5.1786] [0.8631] [0.6824] [ 1.5289] [ 4.0944] [ 3.5341]
[5.0321] [0.8386] [0.6997] [ 1.5754] [ 4.1985] [ 3.5209]
[4.9381] [0.8231] [0.7431] [ 1.6090] [ 4.4583] [ 3.6695]
[4.9326] [0.8221] [0.7708] [ 1.7676] [ 4.6245] [ 3.8018]
[4.7815] [0.7970] [0.8851] [ 2.0084] [ 5.3107] [ 4.0625]
[3.9136] [0.6523] [2.5109] [ 5.3401] [15.0656] [ 9.7846]
[3.8419] [0.6403] [4.3700] [ 8.2200] [26.2199] [16.7885]
[3.8559] [0.6426] [4.3385] [ 7.9125] [26.0312] [16.7235]
[3.8803] [0.6467] [3.9299] [ 7.9730] [23.5793] [15.2499]
[3.8741] [0.6457] [3.8246] [ 8.2150] [22.9478] [14.8167]
[3.8733] [0.6456] [3.9232] [ 8.2825] [23.5394] [15.1959]
[3.8604] [0.6434] [3.9364] [ 8.4879] [23.6182] [15.1961]
[3.8052] [0.6342] [3.9610] [ 8.4783] [23.7659] [15.0720]
[3.8177] [0.6363] [4.0807] [ 8.3607] [24.4842] [15.5765]
[3.7615] [0.6269] [5.4267] [10.9853] [32.5598] [20.4115]
[3.6900] [0.6150] [5.8236] [12.4549] [34.9416] [21.4899]
[3.7249] [0.6208] [6.0688] [12.3084] [36.4125] [22.6080]
[3.7621] [0.6270] [6.4914] [12.5395] [38.9481] [24.4177]
[3.7485] [0.6248] [7.1611] [12.7942] [42.9669] [26.8452]
[3.7492] [0.6249] [7.1063] [12.8555] [42.6379] [26.6462]
[3.7029] [0.6171] [6.6088] [12.9124] [39.6529] [24.4730]
[3.7172] [0.6195] [6.3574] [12.7681] [38.1441] [23.6259]
[3.8148] [0.6358] [6.2090] [12.7283] [37.2539] [23.6851]
[ NaN] [ NaN] [ NaN] [ NaN] [ NaN] [ NaN]}
I want to extrapolate the values in the last row.
I tried
out3=[];
outtx=CELL2MAT(A)
for c = 1:size(outtx,2)
outtxa=inpaint_nans(outtx(:,c)',2);
outtxa=outtxa';
end
out3=[out3 outtxa ];
but I get the following error
?? Subscript indices must either be real positive integers or logicals.
Error in ==> inpaint_nans at 233
fda(n,[n, n-1,n+n])=[-2 1 1];
thanks
PS: is there also a way to find the values in the first 4 rows?
1 commentaire
Oleg Komarov
le 11 Août 2012
Modifié(e) : Oleg Komarov
le 11 Août 2012
Please, store your A in a double matrix.
A = cell2mat(A);
And keep it as double. Storing a double matrix in that ways wastes memory, it's annoying since you always have to convert with cell2mat and it's harder to work with.
Réponse acceptée
Oleg Komarov
le 11 Août 2012
Modifié(e) : Oleg Komarov
le 11 Août 2012
It appears to be a bug in this contribution.
You have two options:
- report this to the author on the FEX and wait for HIS answer.
- Use interp1() with the 'extrap' option
% From my previous answer to your post
xi = (1:size(A,1))';
% Index the non NaN
idx = ~isnan(A(:,1));
out = interp1(xi(idx),A(idx,:),xi,'linear','extrap');
5 commentaires
Oleg Komarov
le 11 Août 2012
@Sabbas: which A are you using, not the same in the example?
I suppose you're looping because NaNs appear at different locations, if not, then no need to loop.
Here follows the polished code from your first comment:
A = cell2mat(A);
xi = (1:size(A,1))';
for c = 1:size(A,2)
idx = ~isnan(outtx(:,c));
outtx(:,c) = interp1(xi(idx),A(idx,c),xi,'linear','extrap');
end
It doesn't work because some of your series could be all NaN or have just one data point.
When it error check the index of the loop and control that the column has at least 2 data points. However, I would recommend checking this BEFORE applying interpolation. Generally, series which do not have enough observations are discarded in toto.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!