我有一个包含2300个数据点的数据文件。数据在-0.1到0.1之间波动 我希望在它再次达到值0.1之前绘制部分图。例如: 如果第一个点是0.1然后绘制它直到它再次达到0.1然后停止.. 并再次做同样的事情。所以,到目前为止,我还没能实现这一目标。任何帮助将不胜感激。
以下是代码:
G_Data = load('sample3.txt');
time = G_Data(:,1);
Ax = G_Data(:,2);
Ay = G_Data(:,3);
Az = G_Data(:,4);
%% Data parsing
ind = find(Az< 0.1& Az>-0.1);
nAz = Az(ind);
ntime = time(ind);
figure
plot(ntime,nAz)
%plot(ntime(1:197),nAz(1:197))'
在这种情况下,我想要数字(197),因为这是第一次数据集达到代码所找到的约0.1的值。
这是当前的情节:
这是所需的情节:
这是数据文件的链接 DataFileTest
答案 0 :(得分:0)
我认为最简单的方法(虽然可能不是计算效率最高的)是将数据分成不同的数组,如下所示:
%make a cell to hold your arrays
outarrays = {};
%initialise a sub-array counter
subarray = 1;
%loop over all datapoints
for datapoint = 1 : length (Az)
outarrays{datapoint} = [];
if Az(datapoint) < 0.1
outarrays{subarray}[end+1] = Az(datapoint);
else
%move on to next sub-array
subarray = subarray + 1;
end
datapoint = datapoint + 1;
end
然后使用
绘制第n个子阵列很简单cumulative_time = 0;
for subarray = 1 : n - 1
cumulative_time = cumulative_time + length(outarray{subarray});
end
plot(time(cumulative_time : cumulative_time + length(outarray{n})),outarray{n});
我知道它充满了在matlab中效率不高的循环,但只有几千点它应该在很短的时间内运行。请检查代码 - 我没有适当的数据来测试它。
希望这有用!