2016-04-26 100 views
0

我需要繪製10分鐘。波形的平均值。所以我寫了下面的代碼在MATLAB:當繪製不同的時間間隔平均值時,如何從(1:間隔* 3600秒)開始保留時間

time= 1:54000   % sec. 
ARC_A1= ones(54000,1) % each row is associated with each of above seconds in order 

intervals= 54000/(10*60) % No. of 10min. intervals in 14hr.*3600=50400sec. 
k=1; 
for n=1:intervals 
    for (i=1+600*(n-1):600*n) 
     sum_ARC_A1(i)= sum(ARC_A1(1+600*(n-1):600*n)) ; 
    end 
    ave_ARC_A1(i)= sum_ARC_A1(i)/600; 
    ARC_A1_ave(k)= ave_ARC_A1(i) 
    t_ARC(k,length(1+600*(n-1):600*n))= 1+600*(n-1):600*n;  ##1 
    k= k+1 
end 

t_ARC 
plot(t_ARC, ARC_A1_ave)          ##2 

我怎麼能有## 1糾正,這樣我可以積「ARC_A1_ave」過的所有間隔即54000sec完整的時間,有以下一些相似的情節:

(需要保持這樣的圖x軸的時間從0至54000sec繪製ARC_A1_ave時。)

To achieve alike this Fig. for ARC_A1_ave

回答

0

假設我們有波形存儲在Mx2矩陣Data[time voltage]的形式與已知的常數採樣率spm(樣本每分鐘)。

[M,N]=size(Data);  % read the size of the Data 
ii=1;     % counter 
StepSize=10*spm  % index increment 

while ii<Data-StepSize % loop untill end of Data 
%% Calculate mean value within ii and ii+StepSize (10 minutes) and assign it to 3rd column. 
    Data(ii:ii+StepSize,3)=mean(Data(ii:ii+StepSize,2)); 
    ii=ii+StepSize;  % Step for another 10minutes interval 
end 

plot(Data(:,1),Data(:,2),'b:'); 
hold on 
plot(Data(:,1),Data(:,3),'b'); 
hold off 
+0

請問您可以將此應用於我的代碼嗎? – Hans

+0

第一列是你的'時間',第二列是'ARC_A1'和第三個'ARC_A1_ave'。 'spm = 60'。 – Crowley