2017-08-31 8 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

関連する問題