# How to interpolate only NaN values with one hole?

3 views (last 30 days)
Gavin Plume on 2 Mar 2024
Commented: Dyuman Joshi on 4 Mar 2024
I have a large matrix (23x6939) with many NaN values. I need to interpolate over any gaps that are only one column wide, but leave any gaps that are two or more NaN values wide.
For example,
x=[1 2 4 4 NaN 6 9 8; 12 13 NaN NaN 20 21 24] becomes [1 2 4 4 5 6 9 8; 12 13 NaN NaN 20 21 24].
How can I distinguish between gaps that are only one value and gaps that are more than one value before applying interp1?

Dyuman Joshi on 2 Mar 2024
fillmissing is a better fit here -
%Note that the data you have provided is not valid
%I have added another element to make it compatible for concatenation
%Sample data
x = [1 2 4 4 NaN 6 9 8; 12 13 NaN NaN 20 21 24 25; 45 NaN NaN NaN 66:69; 3 5 7 11 13 17 19 23]
x = 4x8
1 2 4 4 NaN 6 9 8 12 13 NaN NaN 20 21 24 25 45 NaN NaN NaN 66 67 68 69 3 5 7 11 13 17 19 23
%Fill the gaps less than or equal to MaxGap with linear interpolation,
%along the 2nd dimension
y = fillmissing(x, 'linear', 2, 'MaxGap', 2)
y = 4x8
1 2 4 4 5 6 9 8 12 13 NaN NaN 20 21 24 25 45 NaN NaN NaN 66 67 68 69 3 5 7 11 13 17 19 23
Refer to the MaxGap Name-value Argument section of fillmissing() for information regarding how this feature is defined.
##### 3 CommentsShow 1 older commentHide 1 older comment
Gavin Plume on 4 Mar 2024
Worked like a charm. Thank so much for your help!
Dyuman Joshi on 4 Mar 2024
You're welcome!

### Categories

Find more on Interpolation in Help Center and File Exchange

R2022a

### Community Treasure Hunt

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

Start Hunting!