Octave 如何使用从矩阵派生的标签标记图形系列?
我有很多系列要策划。我想使用矩阵生成系列标签或图例 例如,如果Octave 如何使用从矩阵派生的标签标记图形系列?,octave,Octave,我有很多系列要策划。我想使用矩阵生成系列标签或图例 例如,如果K=[2 4 6],其中K的每个元素对应一个系列,我希望系列标签类似于“K=2”、“K=4”和“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)
K=[2 4 6]
,其中K
的每个元素对应一个系列,我希望系列标签类似于“K=2”、“K=4”和“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'))
您可以获取sprintf返回的字符串,并使用逗号作为分隔符进行字符串拆分
legend(strsplit(sprintf("K=%d,",K),","))
唯一的麻烦是警告:图例:忽略额外的标签
,因为在最后一个逗号后有一个空字符串,但这可以通过不传递最后一个值来解决
legend(strsplit(sprintf("K=%d,",K),",")(1:end-1))
助教。工作正常,但我觉得倍频程也应该有矩阵字符串操作,以避免这种手动处理。