2013-07-04 59 views
0

這是我的劇情代碼。問題是我的情節中的兩條線具有相同的顏色,我需要一個特殊的情節(共4行)。我需要不同的顏色在我的matlab陰謀

for i=1:nFolderContents; 
    [~, data] = hdrload(folderContents(i,:)); 
    if size(folderContents(i,:),2)<size(folderContents,2); 
     temp=folderContents(i,6:9); 
    else 
     temp=folderContents(i,6:7); 
    end 
    temp1(i)=strread(temp); 
    w=2*pi*(data([35 51 68 101],1)); 
    permfreespace=8.854e-12; 
    perm=data([36 52 69 101],3); 
    cond=perm.*w.*permfreespace; 
    conds([36 52 69 101],i)=cond; 
    hold on 

end 


figure(4);plot(temp1,conds); 
gcf=figure(4); 
set(gcf,'Position', [0 0 295 245]); 
xlabel('Temperature [\circC]'), ylabel ('Conductivity [s/m]'); 
title('Different frequencies'); 
legend('1.02 GHz','1.50 GHz','2.01 GHz','3 GHz'); 
axis([20 52 0 4]); 
box on 

新代碼:

conds=zeros(101,28); 
for i=1:nFolderContents; 
    [~, data] = hdrload(folderContents(i,:)); 
    if size(folderContents(i,:),2)<size(folderContents,2); 
     temp=folderContents(i,6:9); 
    else 
    temp=folderContents(i,6:7); 
    end 
    temp1(i)=strread(temp); 
    w=2*pi*(data([35 51 68 101],1)); 
    permfreespace=8.854e-12; 
    perm=data([36 52 69 101],3); 
    cond=perm.*w.*permfreespace; 
    conds([36 52 69 101],i)=cond; 
    hold all 

end 
diff = hsv(101); 
for i=1:101 
    figure(4),plot(temp1(1,:),conds(i,:),'color',diff(i,:)); 
    hold all; 
end 
gcf=figure(4); 
set(gcf,'Position', [0 0 295 245]); 
xlabel('Temperature [\circC]'), ylabel ('Conductivity [s/m]'); 
title('Different frequencies'); 
legend('1.02 GHz','1.50 GHz','2.01 GHz','3 GHz'); 
axis([20 52 0 4]); 
box on 

的問題是,我在圖例框獲得相同的顏色了。

+0

使用'hold all'而不是'hold'# – Dan

+0

仍然存在同樣的問題 – yaya

+0

'temp1'和'conds'的尺寸是多少? – Dan

回答

1

您與101線(零)中定義的變量conds,則改爲4線到某些值。現在你只想繪製這4行,但你的循環運行了101次,所以它也繪製了零線。這就是你得到一條零線的原因(實際上97條線......)。這也是你爲4條曲線獲得相同顏色的原因,可能是各種圖形顏色,在零線上「浪費」。

您應該運行循環只有4次,使用

rows=[36 52 69 101] ; 
color='rgbc' 
for i=1:4 
    plot (temp(1,:), cond(rows(i),:), 'color',color(i)); 
    hold on 
end 
hold off 

其實,你並不需要這個conds=zeros(101,28)所有,只是糾正插入值conds到行:

conds=cond([36 52 69 101],:); 

而且,我不認爲你需要它在第一個循環內。

+0

嗨,謝謝你的幫助,但是我得到了這個錯誤的評論???索引超出了矩陣的尺寸 Error in == (4); plot(temp(1,:),cond(rows(i),:),'color',color(i)); – yaya

0

使用HSV以獲得不同的顏色:

diff = hsv(101); 
for i=1:101 
    plot(temp1(1,:),conds(i,:), 'color',diff(i,:)); 
    hold on; 
end 
+0

嗨,感謝您的幫助。但仍然獲得紅色兩次 – yaya

+0

@yaya他們必須是不同的紅色陰影。我們的眼睛不能區分它們。 :) –

+0

@yaya嘗試使用全部在這裏而不是等待。看看ColorOrder http://www.mathworks.in/help/matlab/ref/axes_props.html?s_tid=doc_12b –