Как выбрать конкретный элемент из следующей матрицы? (в Matlab) - PullRequest
0 голосов
/ 07 декабря 2009
data = rand(N,2);             %# generate random points
index = (rand(N,1) <= p);     %# roll coins to pick with prob p
data(~index, :) = [];         %# keep only selected points
plot(x(index),y(index),'r*');

dist=sqrt((data(1,1)-data(~index,1))^2+(data(1,2)-data(~index,2))^2); % ques is what to put for data(~index,:) 's first or any element?

Если нам нужно найти расстояние между любой точкой data=rand(N,2) (скажем сначала) и любой точкой data(~index, :) = []; (скажем также и первым), как мы можем использовать матрицу data(~index, :) = []; в следующем утверждении?

dist=sqrt((data(1,1)-data(~index,1))^2+(data(1,2)-data(~index,2))^2)

Мой вопрос такой: как мы берем первый элемент data как data(1,1) и data (1,2), как мы берем первый элемент матрицы data(~index,:)?

Ответы [ 2 ]

2 голосов
/ 07 декабря 2009

Я не совсем уверен, что вы хотите сделать.

Команда data(~index, :) = [] удаляет все строки, для которых случайное число больше p, поэтому после этой команды data больше не будет матрицей N-на-2, а будет меньшей матрицей. Я предполагаю, что вы не дадите эту команду, потому что после этого вы больше не сможете ссылаться на точки в data, которые были удалены.

Если вы хотите взять расстояние между первой точкой в ​​data и первой точкой в ​​data, выбранной случайным броском монеты, можно использовать функцию find (посмотрите, что это делает):

indexList = find(index);
firstIndex = indexList(1);
dist = sqrt((data(1,1)-data(firstIndex,1))^2 + (data(1,2)-data(firstIndex,2))^2);

Последняя строка также может быть записана как:

dist = norm(data(1,:) - data(firstIndex,:));

Если вы хотите что-то еще, пожалуйста, объясните.

0 голосов
/ 07 декабря 2009

Предполагая, что под 'первым элементом data (~ index,:) ' вы подразумеваете первый элемент, для которого ~ index имеет значение true, тогда будет работать и следующее 100 * *

firstValue = data(find(~index,1,'first'),:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...