我目前正在尝试在Matlab / Octave中实现一个循环,其中来自文件的数据被读取,存储在一个数组中,然后以1600个点的间隔进行集成(每个数据点的间隔为10 ns)。 我理解我需要做的事情的逻辑,但我无法编码。任何帮助将不胜感激。
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
答案 0 :(得分: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