Hug*_*ogo 8 matlab plot logfile-analysis data-processing
我有一大堆(~1000)来自我正在尝试处理的数据记录器的文件.
如果我想从这些日志文件中的一个中绘制趋势,我可以使用它
plot(timevalues,datavalues)
Run Code Online (Sandbox Code Playgroud)
我希望能够以与示波器具有"持久"模式的方式类似的方式同时查看所有这些线.

我可以拼凑一些使用直方图的东西,但我希望有一个预先存在的或更优雅的解决方案来解决这个问题.
您可以完全按照自己的建议进行操作,即绘制信号的热图.
请考虑以下内容:我将构建一个测试信号(来自不同幅度的正弦波),然后我将通过hist3和绘制热图imagesc.
我们的想法是构建一个辅助信号,它只是所有时间历史(包括x和y)的并置,然后从中提取基本的双变量统计数据.
% # Test signals
xx = 0 : .01 : 2* pi;
center = 1;
eps_ = .2;
amps = linspace(center - eps_ , center + eps_ , 100 );
% # the auxiliary signal will be stored in the following variables
yy = [];
xx_f = [];
for A = amps
xx_f = [xx_f,xx];
yy = [yy A*sin(xx)];
end
% # final heat map
colormap(hot)
[N,C] = hist3([xx_f' yy'],[100 100]);
imagesc(C{1},C{2},N')
Run Code Online (Sandbox Code Playgroud)

您还可以使用jetcolormap而不是hotcolormap来提高可读性.在下文中,幅度是高斯而不是同质.

这是一个刚才使用的"原始"解决方案hist:
%# generate some fake data
x=-8:0.01:8;
y=10*sinc(x);
yy=bsxfun(@plus,y,0.1*randn(numel(x),1000)' );
yy(randi(1000,1,200),:)= 5-randi(10)+ circshift(yy(randi(1000,1,200),:),[1 randi(numel(x),1,200)]);
%# get plot limit parameters
plot(x,yy)
yl=get(gca,'Ylim');
xl=get(gca,'Xlim');
close all;
%# set 2-d histogram ranges
ybins=100;
xbins=numel(x);
yrange=linspace(yl(1),yl(2),ybins);
xrange=linspace(xl(1),xl(2),xbins);
%# prealocate
m=zeros(numel(yrange),numel(xrange));
% build 2d hist
for n=1:numel(x)
ind=hist(yy(:,n),yrange);
m(:,n)=m(:,n)+ind(:);
end
imagesc(xrange,yrange,m)
set(gca,'Ydir','normal')
Run Code Online (Sandbox Code Playgroud)
