2014-04-29 2 views
8

처리하려고하는 데이터 로거에서 많은 수의 파일 (~ 1000 개)이 있습니다. 나는 비슷한 방식으로 동시에 이러한 모든 라인을 볼 수 있도록하고 싶습니다많은 라인을 히트 맵으로 표시

plot(timevalues,datavalues) 

사용하여 내가 할 수있는 이러한 로그 파일의 하나 하나의 경향을 플롯하고 싶었다면

오실로스코프가 "지속성"모드를 갖는 방법에 대해 설명합니다.

Oscilloscope Diplay

아마 함께 히스토그램을 사용하여 뭔가를 자갈 수 있지만이 문제에 대한 기존의 또는 더 우아한 해결책이 기대하고있다.

+0

기본적으로 한 줄에 1000 줄을 갖고 싶습니까? – thewaywewalk

+0

오실로스코프 플롯과 같이 하나의 플롯을 생성하기 위해 1000 라인의 데이터를 사용하고 싶습니다. 더 많은 웨이브 폼이 "스택 된"색상을 사용하여 동시에 많은 업데이트를 표시합니다 (즉 빨간색 부분)과 파형 (파란색 부분)에 때때로 차이점이나 결함이있는 경우 – Hugoagogo

+1

이 정보가 유용할까요? http://www.mathworks.com/help/comm/ref/commscope.eyediagram.html – bla

답변

9

신호의 히트 맵을 플로팅하는 것과 같이 자신이 제안한 것을 정확하게 수행 할 수 있습니다.

는 다음 사항을 고려 : 그때 내가 hist3imagesc를 통해 히트 맵을 그릴 것, (다른 진폭의 정현파에서) 테스트 신호를 구축 할 수 있습니다.

아이디어는 모든 시간 기록 (둘 다 xy)의 병치 인 보조 신호를 작성한 다음 기본 이진 통계를 추출합니다.

% # 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') 

enter image description here

또한 jet 컬러 맵 대신 가독성 hot 컬러 맵을 사용할 수 있습니다. 다음은 진폭이 동질이 아닌 가우스입니다.

enter image description here

+1

감사합니다. 제가 찾고 있던 바로 그 것이 었습니다. 나는 hist3를 잠시 보았지만 그 조각들을 모으는 방법을 확실히 알지 못했습니다. 답변을 수락하기 전에 신호가 급격하게 변할 때 히트 맵에 더 많은 데이터를 추가 할 수있는 보간 외에 다른 방법이있어 선이 사라지는 결과를 초래할 수 있습니다. – Hugoagogo

+0

@Hugoagogo, 문제가 생겼습니다. 보간은 문제를 다루는 깔끔한 방법이라고 생각합니다. 그럼에도 불구하고 문제가 발생한 곳뿐만 아니라 때마다 보간법을 사용하여 시간 분해능을 높여야합니다. 그렇지 않으면 이변 량 통계치가 망가질 것입니다. – Acorbe

+0

이 코드 예는 https://www.mathworks.com.au/matlabcentral/answers/63233-interpolating-the-2d-line-to-make-the-new-coordinates-equi-distant로 잘 작동하는 것으로 나타났습니다. 내 목적에 충분하다.이 대답을 승낙으로 표시 – Hugoagogo

7

여기에 단지 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') 

enter image description here

+1

이것이 제가 생각하고 접근 한 접근 방식입니다. @Acorbe가 제공하는 해결책은 제가 더 좋은 우아한 솔루션이라고 생각하여 그 대답을 받아 들였습니다. 샘플 데이터가 더 좋습니다. – Hugoagogo

1

왜 데이터를 정상화하지 않는 한 다음 모두 함께 줄을 추가? 단일 데이터 파일에서 히트 맵을 그릴 수 있습니다.

관련 문제