Построение векторов в Matlab - PullRequest
0 голосов
/ 24 февраля 2011

У меня такая ситуация, и я не могу ее решить должным образом.Проблема заключается в следующем: у меня есть 3 вектора:

  • Vector1 = [name1 name2 name3 name4 ... nameN] (имена строк)
  • Vector2 = [time1 time2 time3 time4] (Double)
  • Vector3 = [time1: name4 time2: name1 time3: name1 time4: name1] (double: String)

Я хочу сделать следующее в matlab:

1 - Поместите Вектор 1 в ось Y с именами - я мог бы сделать это с помощью следующего кода:

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

2 - Поместите Вектор 2 в ось X с, чтобы имитировать временную шкалу

3- Как только у нас есть оси X и Y, я бы хотел использовать 3 Vector для построения точки на графике

Например, 3 Vector содержит последовательные временные метки и в каждой временной метке выполняется имя N, поэтому я 'Я хотел бы построить точку на графике, используя 3 вектора в качестве входных данных.

Есть предложения? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Вам нужно преобразовать имена в 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 голосов
/ 24 февраля 2011

Один из способов сделать это,

  1. ставить только значения в Vector3
  2. затем используйте plot (vector2, vector3)

Также я предлагаю переименовать vector1 в «scale», vector2 в «time» и vector3 в «values». Это должно помочь вам понять, что вы используете для чего и т.д. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...