Replace stale / repeating data with NaN in a table
    7 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have data in a time table with around 10 variables. occasionally the data source "stalls out" and just keeps outputting the last value instead of fresh data in a particular column. The timestamp and some columns will update correctly. What I want to do is replace the stale / repeated values with NaN. I can't just remove the row as I need the other columns. When the data is good there would never be a case where the same value repeats twice or more in a row. 
example input
data.Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ] 
desired output 
data.Var1 = [ 3 , 2, 5, 4, NaN , NaN, NaN, 6, 2, 3 , 5, NaN , NaN ,NaN ] 
I saw something in a previous post (https://www.mathworks.com/matlabcentral/answers/216921-need-to-remove-repeated-adjacent-elements-in-an-array?s_tid=srchtitle )  that could work but I'm struggling to modify it for my needs as it removes values, once I put in NaN the test doesnt know where the last good value was. 
I'd consider upgrading if theres a function in a newer version or toolbox. 
0 件のコメント
採用された回答
  KSSV
      
      
 2021 年 9 月 24 日
        Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ] ;
% Var1 = [ 3 , 2, 5, 4, NaN , NaN, NaN, 6, 2, 3 , 5, NaN , NaN ,NaN ] 
idx = find(diff(Var1)==0)+1 ; 
Var1(idx) = NaN 
1 件のコメント
  Markus Niemelä
 2022 年 3 月 21 日
				Hi!
I was wondering, how to do this exact thing, but for multiple columns?
For example: Let's say I have matrix:
1    2    3    4
2    3    4    4
3    1    3    1
3    1    3    2
And the desired output would then be:
1        2        3        4
2        3        4        NaN
3        1        3        1
NaN    NaN      NaN        2
I hope this makes sense,
Kr, Markus
その他の回答 (1 件)
  Mohammad Sami
      
 2021 年 9 月 24 日
        You can try this.
Var1 = [ 3 , 2, 5, 4, 4 , 4, 4, 6, 2, 3 , 5, 5 ,5 ,5 ];
i = Var1(2:end) == Var1(1:end-1);
i = [false i];
Var1(i) = NaN
0 件のコメント
参考
カテゴリ
				Help Center および File Exchange で Logical についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



