MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

# How do we plot a graph with non available values for y without breaking the continuity?

Asked by Emerson De Souza on 25 Oct 2012

INTRO: I have an array M as below:

```M=
1	4
2	NaN
3	10
4	NaN
5	NaN
6	15
7	NaN
8	17
9	59
10	NaN
```

GOAL: I want to plot the second versus the first column as follow:

```M=load('M.txt');
h=plot(M(:,1),M(:,2));
```

PROBLEM: Due to the NaN, it does not plot the gaps correctly and breaks the continuity of the graph.

I wonder if someone could suggest me to some command lines that could fix this issue.

Emerson

## Products

Answer by Matt Tearle on 25 Oct 2012

You can interpolate to fill the missing values, as Azzi suggests, or simply remove all the NaNs:

```idx = ~isnan(M(:,2));
x = M(idx,1);
y = M(idx,2);
plot(x,y,'o-')
```

If you don't plot markers on the data points, this will look exactly the same as Azzi's solution using interpolation. The difference is whether or not you care about showing which points are actual data values.

Answer by Azzi Abdelmalek on 25 Oct 2012
Edited by Azzi Abdelmalek on 25 Oct 2012

Use interpolation

```x=M(:,1);
y=M(:,2);
idx=find(~isnan(y))
y=interp1(x(idx),y(idx),x,'linear')
```

or remove rows containing nan

``` x=M(:,1);
y=M(:,2);
x(find(isnan(y)))=[]
y(find(isnan(y)))=[]```