2012-05-08 11 views
1

私はforループのプロットを持っており、凡例コマンドを使用してそれらにラベルを付ける必要があります。私はそれを使用する文字列の配列を作成する必要があります。なんらかの理由で、うまく動作しないようです。誰かが助けてくれる?私は以下のコードを貼り付けています。MATLABでの凡例の使用

for i = 1:len 
    for j = 1:C{i,1}/n 
    cc = hsv(12); 
    semilogx(w/pi,Same_psd{i,1}(:,j+1),'color',cc(j+1,:)) 
    str = num2str(Same_mean{i,j+1}); 
    srt_array = [str_array; str]; 
    legend(str_array); 
    end 
    end 
+0

'伝説(str_array)'、おそらく両方 'for'ループの外に行く必要があります。最後に 'str_array'を出力してみてください。期待通りの文字列が含まれているかどうか確認してください。 – Richante

+0

いいえ。問題はstr_array = [];でstr_arrayを初期化するときに文字列を連結することにあります。 –

+0

その変数空間に別の変数として格納され、文字列である新しい変数は、私は –

答えて

4

これを試してみてください:

legend_labels = cell(10,1); 

for i = 1:10 

    h(i) = plot(randn(10,1)); 
    hold all 
    legend_labels{i} = sprintf('This is label #%i', i); 

end; 

legend(h,legend_labels{:}) 
1

は、DisplayNameプロパティを使用してみてください。凡例を保証できる優れた副作用はあなたのラインと同期していますか?

例:

clf 
hold on 
for i = 1:10 
    col = rand(3,1); 
    semilogx(1:10,rand(10,1),'DisplayName',sprintf('This is curve %i',i),... 
    'color',col) 
end 
legend('Location','best')