循环遍历数据以集成块:MATLAB

时间:2017-08-31 10:37:46

标签: matlab loops octave

我目前正在尝试在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 

1 个答案:

答案 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