2014-11-25 2 views
0

я есть временные ряды данных сигнатур для ху координат, как указано ниже (для одного файла) ...Как вычислить разницу между каждой точкой ряда данных из первой точки?

x  y 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12300 9400 
12300 9400 
12300 9400 
12300 9400 
12300 9400 
12300 9400 
12300 9300 
12300 9300... 

Я хотел бы вычислить (разность) ху координат относительно первой точки серии .. Может ли кто-нибудь вести меня, как я могу вычислить его в Matlab? Любая подходящая функция или фрагмент кода? Спасибо заранее.

+1

Гораздо проще помочь, если вы удалите некоторые дубликаты (вы можете легко сделать набор данных на половину размера и по-прежнему задавать один и тот же вопрос. Кроме того, он очень помогает, если вы включаете желаемый результат (что опять проще, если у вас меньше строк. –

+0

Спасибо, сэр ... я понял. –

+1

Я ответил на вопрос в первом комментарии? Если так, я отправлю его в качестве ответа, чтобы вопрос не остался без ответа. решила проблему? Или это был второй комментарий, и вы обновите вопрос? –

ответ

1

Чтобы вычесть первую строку из всего массива, используйте bsxfun:

A = [ 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12200 9400 
12300 9400 
12300 9400 
12300 9400 
12300 9300 
12300 9300] 

differenceToFirstPoint = bsxfun(@minus, A, A(1,:)); 

%# to calculate the norm: 
normOfDifference = sqrt(sum(differenceToFirstPoint.^2, 2)); 
+0

Спасибо Jonas. Решил мою проблему .. –

0

Я предполагаю, что ваш вопрос, исходя из множества точек (x1,y1);(x2,y2);...(xn,yn) как получить (0,0);(x2-x1,y2-y1);...(xn-x1,yn-y1)

Быстрого решения: если a является массивом N-на-2, содержащий данные, а затем

b=a; b(:,1)=b(:,1)-b(1,1); b(:,2)=b(:,2)-b(1,2); 

Если Qu estion был о том, как импортировать данные из файла CSV или что-то еще, это совершенно другое.

 Смежные вопросы

  • Нет связанных вопросов^_^