2016-10-23 6 views
2

여러 줄을 다른 색상으로 플로팅하는 작업을 벡터화/가속화 할 수있는 방법이 있습니까?MATLAB에서 여러 색상을 다른 색상으로 플로팅하여 벡터화 하시겠습니까?

노동하지만 느린 접근 방식은 내가

X = [1 2; 3 4]; 
Y = [2 -4; 5 2]; 
figure; 
plot(X, Y, 'Color', [1 0 0; 0 1 0]); 

하지만 행운을 시도

X = [1 2; 3 4]; 
Y = [2 -4; 5 2]; 
figure; 
hold on; 
colors = [1 0 0; 0 1 0]; 
for idx = 1:size(X, 2) 
    l = plot(X(:, idx), Y(:, idx), 'Color', colors(idx, :)); 
end 
hold off; 

입니다.

+1

지금은 테스트 할 수 없지만 플로팅하기 전에 한 번 수동으로 축 제한을 설정해보십시오. 따라서 MATLAB은 매번 계산할 필요가없는 경우 매번 계산할 필요가 없습니다. Yahir Altman의 [this] (http://undocumentedmatlab.com/blog/plot-performance) 기사와 텍스트 아래의 해설에 대한 몇 가지 팁을 확인하십시오. 어떻게 든 도움이되기를 바랍니다! –

+1

다음을보십시오 : http://stackoverflow.com/a/22029354/2778484 – chappjc

+0

알려진 개선점 중 하나 :'plot'에 저수준 함수'line'을 사용하십시오. –

답변

2

이것은 아마도 루프의 유용한 대체하기에는 너무 해키이지만, 여기 간다 :

set(gca, 'ColorOrder', [1 0 0; 0 1 0], 'NextPlot', 'add') 
plot(X, Y); 

'ColorOrder' 속성은 색상이 새로운 플롯에 대해 기본적으로 사용되는이 포함되어 있습니다. plot을 호출해도 'ColorOrder'이 기본값으로 재설정되지 않도록 'NextPlot'에서 'add'으로 설정하는 것이 필요합니다.

R2015b에서 테스트되었습니다.

+0

+1; 감사! 이것이 정말로 물건을 더 빨리 만들 수 있을지 궁금한가요? 나의 궁극적 인 목표는 것들을 가속화하는 것입니다. (벡터 라이 제이션이 아닙니다.) :-D –

+1

@SibbsGambling 속도에 관해서는 Matlab 버전과 특정 케이스에서 더 잘 시도하십시오. 그러나 루프는 훨씬 더 읽기 쉽습니다. 나는 아마도 그걸로 갈 것입니다 –

+0

오,하지만 내 색상이 RGB 대신 RGBA라면 어떻게 될까요? 그냥 시도해 보았습니다.''set (gca, 'ColorOrder', colors);'는 실제로 네 개의 열을 차지하지 않습니다. –

관련 문제