2017-08-31 64 views
0

我目前正試圖在Matlab/Octave中實現一個循環,其中讀取文件中的數據並將其存儲在一個數組中,然後集成在1600個點的批處理中(每個數據點間隔在10ns)。 我瞭解我需要做什麼的邏輯,但無法對其進行編碼。任何幫助,將不勝感激。循環通過數據集成在塊中:MATLAB

trace_int = zeros(320000,1); 
trace_c = zeros(200,1); 
trace = dlmread('trace_all.dat',' ',[0,0,320000,1]); 
while i = 1:200 
    trace_i(i,:) = trace(1+1599*(i-1):1:1600*(i)); 
    trace_c(i,:) = trapz(trace_i(i)); 
end 

這就是數據的模樣

20 1484 
30 1484 
40 1483 
50 1484 
60 1484 
70 1484 
80 1483 
90 1483 

回答

2

沒有必要爲一個循環:

% create sample data 
trace = [20 1484; 30 1454; 40 1493; 50 1414; 60 1404; 70 1494; 80 1473; 90 483]; 

n = 4; % this would be 1600 in your case 
trace_c = trapz (reshape (trace (:, 2), n, [])) 

回報:

trace_c = 
    4396.0 3910.5 
+0

通過觸摸打我吧!請注意,你並沒有考慮整合中的X數據(OP也不公平),但由於它的時間間隔不變,所以我們可以在最後除以dx – Wolfie

+0

@Wolfie因爲他說空間是恆定的10ns。 ..感謝編輯,我總是忘記,MATLAB不能處理#作爲評論 – Andy

+0

是的,簡化了事情。不用擔心,我經常誤用'''當我處於完全VB模式 – Wolfie