Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

How to: Delete nums if before NaN

Asked by Hello kity on 30 Jan 2013

I have the following data (matrix).

I need to delete it if there is only 1 datapoint, 2 or more should stay. so in this example, -12.5 should be deleted.

Matrix=[NaN;NaN;-12.5000000000000;NaN;NaN;-8.90000000000000;-9.20000000000000;NaN;NaN;-9.60000000000000;-9.60000000000000;-9.60000000000000;NaN;]

Condition:

If num - 1 index = NaN and num + 1 = NaN
Delete that row
end
    NaN
    NaN
    -12,5000000000000
    NaN
    NaN
    -8,90000000000000
    -9,20000000000000
    NaN
    NaN
    -9,60000000000000
    -9,60000000000000
    -9,60000000000000
    NaN

thank you

1 Comment

Jan Simon on 30 Jan 2013

Please provide data such that we can use it by copy&paste for Matlab code. This means surrounding brackets, less trailing zeros and decimal points instead of commas. Thanks.

Hello kity

Tags

Products

No products are associated with this question.

1 Answer

Answer by Jan Simon on 30 Jan 2013
Edited by Jan Simon on 30 Jan 2013
Accepted answer
value = [NaN, NaN, -12.5, NaN, NaN, -8.9, -9.2, NaN, ...
         NaN, -9.6, -9.6, -9.6, NaN];
index = strfind(isnan(value), [true, false, true]);
value(index + 1) = [];

[EDITED] Perhaps you need a transpose(value), because strfind requires a row vector.

1 Comment

Hello kity on 30 Jan 2013

thank you

strfind was the function i was looking for :)

really greateful

*edit, it is a column, i look if it is necessary

Jan Simon

Contact us