取得したデータの周期性をみつけたい
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
[Matlab初心者です]
取得したtableのデータが
:
FFFE
FFFF
FFFF
0000
0000
0000
0001
0001
0002
:
FFFE
FFFF
FFFF
0000
0000
0000
0001
0001
0002
:
のような周期を持っています。
周期ごとに 別tableの別Columnに格納したいです。
Col1  Col2
-----------------
0000 0000
0000 0000
0000 0000
0001 0001
0001 0001
0002 0002
:         :
matlabの関数に何か周期性をみつける関数はあるのでしょうか?
2 Commenti
Risposta accettata
  Kazuya
      
 il 21 Nov 2018
        
      Modificato: Kazuya
      
 il 21 Nov 2018
  
      地味なコードで好みが分かれそうですが、一例として参考まで。
hoge = [
"0000"
"0001"
"FFFF"
"0000"
"0001"
"FFFF"
"0000"
"0001"
"FFFF"]; % ダミーデータ
idx1 = hoge == "FFFF"; % FFFF である行を見つけます。
idx2 = hoge == "0000"; % 0000 である行を見つめます。
idx = idx1(1:end-1) & idx2(2:end); % 1つずらして論理和を取ると FFFF から 0000 に変化する位置が分かります。
idx = [1; idx] % 元データと行数を合わせます(一番頭は 0000 と仮定)
loc0 = find(idx) % find で何行目に 0000 があるかを求める
% この例だと loc0 = 1,4,7
% 均等に3列に分けられる列数であると仮定して分割
hoge1 = reshape(hoge,loc0(2)-1,[])
hoge2 = array2table(hoge1) % table 型に変換
結果として
hoge2 =
  3×3 table
    hoge11    hoge12    hoge13
    ______    ______    ______
    "0000"    "0000"    "0000"
    "0001"    "0001"    "0001"
    "FFFF"    "FFFF"    "FFFF"
となります。
2 Commenti
  Kazuya
      
 il 21 Nov 2018
				配列 idx の先頭に1を追加してます。例えば
>> idx = [2;3;4]
idx =
     2
     3
     4     
に対して
>> idx = [1; idx]
idx =
     1
     2
     3
     4     
1つずらして論理和をとったのでもともとの hoge の行数に対して、idx の行数が1つ減ってしまうので、比較をしやすいように 1 を追加して行数を合わせてます。hoge 内で FFFF -> 0000 と変化する位置が分かりやすいかな・・と。
Più risposte (3)
  Kei Otsuka
    
 il 19 Nov 2018
        Signal Processing Toolboxをお持ちであれば、自己相関や周波数解析を利用して
周期性を検出するような例題を試すことができます。
記載頂いたデータは16進表記(符号あり?)でしょうか。その場合はhex2dec等で10進数に
変換してからお試しください。
0 Commenti
Vedere anche
Categorie
				Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



