2014-06-20 1 views
0

음모를 꾸미기 위해 일련 번호가 있습니다. 행렬을 사용하여 시리즈 레이블 또는 범례를 생성하고 싶습니다.행렬에서 파생 된 레이블을 사용하여 그래프 시리즈에 어떻게 레이블을 지정할 수 있습니까?

예 : K=[2 4 6] 인 경우 K의 각 요소는 시리즈에 해당하며 계열 레이블은 "K=2", "K=4" and "K=6"과 같아야합니다.

function Y=Q(X) 
    Y=0.5.*erfc(X./sqrt(2)) 
endfunction 

EbNodB=0:2:20 
EbNo=10.^(EbNodB/10) 
K=[2 4 6] 
M=2.^K 
KM=3*K./(M-1) 
KME=KM'*EbNo 
X=sqrt(KME) 
Pb=((4./K).*(1-1./sqrt(M)))'.*Q(X) 
semilogy(EbNodB,Pb) 
title("M-QAM BER") 
grid on 
grid minor on 
#legend(sprintf("K=%d,",K)) 

이 가까이 온다 - 다만 각 전설의 앞에 "K=" 누락 : 여기

내 코드입니다

legend(num2str(K')) 

답변

0

당신은의 sprintf에 의해 반환되는 문자열을 받아 문자열 분할을 할 수 쉼표를 구분 기호로 사용하여

legend(strsplit(sprintf("K=%d,",K),",")) 

유일한 annoyan 마지막 쉼표 뒤에 빈 문자열이 있기 때문에 this는 warning: legend: ignoring extra labels이지만 마지막 값을 전달하지 않음으로써 고칠 수 있습니다.

legend(strsplit(sprintf("K=%d,",K),",")(1:end-1)) 
+0

Ta입니다. 잘 작동하지만 Octave가이 수동 처리를 피하기 위해 행렬 문자열 연산을 가져야한다고 생각합니다. – philcolbourn

관련 문제