Matlab
1Fs = 1000; 2tind = [1:length(a1)]/Fs; 3tind=tind' 4 5opol = 6; 6[p,s,mu] = polyfit(tind,a1,opol); 7f_y = polyval(p,tind,[],mu); 8 9dt_a1 = a1 - f_y;
今はa1が入っていますが、これをa2からa36で同じことを36回繰り返してa1に入っているデータの非線形トレンドを除去したいと思っています。
(非線形トレンドについては、こちらのURLをご参照ください。
https://jp.mathworks.com/help/signal/ug/remove-trends-from-data.html)
forループを使えばよいと思うのですが、
[,,]=polyfit();
のコードにどのようにforループを適用したらよいかがわからず、ご質問させていただいております。
どうぞよろしくお願い致します。
必要なのは「dt_a数字」(数字は1〜36)だけですか?
jbpb0様
ご質問ありがとうございます。
はい、そうです。
質問に記載のコードを全部forループ内に入れます
「a1」と「dt_a1」を含む三つの行以外の行はそのままです
「a1」と「dt_a1」を含む三つの行は、
https://teratail.com/questions/stgcu0goabgros
の私の回答と同様にやります
「a1」と「dt_a1」の「1」の部分は「num2str()」でループ毎に数値が変わるようにして一旦文字列で作成し、その文字列を「eval()」で実行します
jppb様
ご回答ありがとうございます。
jppb様のおかげ様で基本的な考え方が少しずつ理解できてきました。
教えていただいた方法で書いてみます。
Fs = 1000;
opol = 6;
は、forループの全回で同じなら、forループの前(上)に出して大丈夫です