2009-12-07 2 views
-1
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, :) = []; матрицу в следующей инструкции?как выбрать конкретный элемент из следующей матрицы? (В MATLAB)

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

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

Команда 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

Предполагая, что вам «первый элемент данных (~ индекс :) ​​» вы имеете в виду первый элемент, для которого ~ индекс верно, то следующее будет также работать

firstValue = data(find(~index,1,'first'),:) 
Смежные вопросы