筋電図のRMS処理を行いたいです。
以下のコードのrawは3640 × 1 doubleとなっています。
1つの筋に対してRMS処理を行なっているコードとなります。
質問1
このrawが3640 × 8 となり、各列ごと(8つの筋)にRMS処理を行いたいと考えております。
その際はどの様にfor ループを回せば良いでしょうか。
nedge = floor(wlength/2);
RMS(ii,1) = rms(raw(1:(ii+nedge), 1));
if(ii > nedge && ii < dlen - nedge)
RMS(ii,1) = rms(raw((ii-nedge):(ii+nedge), 1));
RMS(ii,1) = rms(raw((ii-nedge):dlen, 1));
質問2
上記の処理を複数のCSVファイルから同時に行いたいと考えております。
例)10個のcsvファイル(cap1.csv, cap2.csv, cap3.csv......)があるとします。
各csvファイルには8つの筋電図の生データが入っており、行数はファイルによって異なります。
それぞれのファイルから筋電図の生データを取り出し、質問1で行なったRMS処理をそれぞれの筋に対して行うにはどの様にすれば良いでしょうか?
下のコードは
Grip05.csv, Grip15.csv, Grip25.csvという3つのCSVファイル(それぞれ1つの筋のデータが入っている)があり、
RMS処理を行なっているものになります。
これの8筋バージョンを行いたいのですが可能でしょうか?
もし可能であれば、コードを教えていただけると幸いに存じます。
nedge = floor(wlength/2);
RMS_data{1,jj} = [num2str(Res(1,jj)), ' kg'];
emg = importdata(['Grip', num2str(Res(1,jj), '%02d'), '.csv']);
tind = [1:length(raw)]/Fs;
RMS(ii,1) = rms(raw(1:(ii+nedge), 1));
if(ii > nedge && ii < dlen - nedge)
RMS(ii,1) = rms(raw((ii-nedge):(ii+nedge), 1));
RMS(ii,1) = rms(raw((ii-nedge):dlen, 1));
figure(101); subplot(1,3,jj);
title(['Resist.: ', num2str(Res(jj)), ' kg']);
ylim([0,0.5]); xlabel('Time [s]'); ylabel('RMS [mV]');
何卒、よろしくお願いいたします。
引用: MATLABで学ぶ生体信号処理, コロナ社