2011-02-24 204 views
0

我有這種情況,我無法以正確的方式解決它。問題是這樣的: 我有3個載體:在matlab中繪製矢量

  • 向量1 = [NAME1 NAME2 NAME3 NAME4 ... nameN](字符串名稱)
  • Vector2 = [TIME1 TIME2時間3時間4](雙)
  • 的Vector3 = [time1表示NAME4 TIME2:NAME1時間3:NAME1時間4:NAME1](雙:字符串)

我想要做在MATLAB執行以下操作:

1-把矢量1在Y軸與名與

set(gca, 'YTick',1:N, 'YTickLabel',Names(:,1)) 

2-放矢量2在X軸,以模擬時間線

3-一旦我們有兩個X軸&Ÿ我想: -我可以用這個代碼做使用3矢量繪製圖中的點

例如,3 Vector包含確切的時間戳,並且在每個時間戳中執行nameN,所以我想用3個矢量作爲輸入在圖中繪製一個點。

任何建議?在此先感謝

回答

1

您需要將vector3中的名稱轉換爲數字,然後您可以調用plot命令。

例如

names = {'a','b','c','d'}; %# use a cell array (curly brackets) for strings 
time = [10 20 30 40 50]; 
data = {10,'d';20,'b';40,'c'} 

%# convert data to numeric xData, yData 
xData = cell2mat(data(:,1)); 
[dummy,yData] = ismember(data(:,2),names); 

%# plot 
plot(xData,yData,'.') %# plot dots 
set(gca,'YTick',1:length(names),'YTickLabel',names,'XTick',time) 

%# make sure the axes limits aren't too tight 
xlim([0,60]),ylim([0,5]) 
+0

我得到一個錯誤在這條線: [〜,YDATA] = ismember(數據(:,2),名稱); 表達式或語句不正確 - 可能是不平衡的({,或[。 –

+0

@Martin Solac:我想你正在使用一個較舊版本的Matlab,其中'〜'-notation不被支持。代碼。 – Jonas

0

一種方式來做到這一點是,

  1. 只放了值的Vector3
  2. 然後用圖(vector2,的Vector3)

此外,我建議將vector1重命名爲「scale」,vector2重命名爲「time」,vector3重命名爲「values」。這應該有助於讓你的頭腦清楚你正在用什麼等等。希望這有助於。