Как выбрать значения больше среднего в массиве? - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу применить выбор объектов к набору данных (lung.mat). После загрузки данных я вычислил среднее расстояние между каждым объектом с другими по методу Жакара.Затем я отсортировал расстояния по убыванию в B1.И тогда я выбрал для примера 25 число всех функций и сохранил матрицу в базе данных1.Я хочу выбрать объекты, значения расстояний которых превышают среднее значение массива (B1).

close all;
clc
load lung.mat
data=lung; 
[n,m]=size(data);
for i=1:m-1
      for j=i+1:m
            t1(i,j)=fjaccard(data(:,i),data(:,j));
           b1=sum(t1)/(m-1);
     end
  end
 [B1,indB1]=sort(b1,'descend');
 databs1=data(:,indB1(1:25));
 databs1=[databs1,data(:,m)]; %jaccard
 save('databs1.mat');

Буду благодарен за ваше мнение о том, как определить это в B1, при выборе значенийB1, которые больше, чем среднее значение массива B1. Это означает обрезку остальных меньших значений, чем среднее значение B1.Я использовал эту строку,

B1(B1>mean(B1(:)))

после запуска, B1 по-прежнему имеет полное число объектов (столбец), равное полному набору данных, например, lung.mat имеет 57 объектов, а B1 по этой строке по-прежнему имеетВ 57 столбцах я посчитал, что по этой строке B1 будет обрезано до количества признаков, которые превышают среднее значение B1.

1 Ответ

1 голос
/ 23 сентября 2019

общий ответ на ваш вопрос находится здесь (это кажется вам понятным на основе вашего кода):

a=randi(10,1,10) %example data
a>mean(a) %get binary matrix of which elements are larger than mean 
a(a>mean(a)) %select elements from a that are larger than mean

a =

     1     9    10     7     8     8     4     7     2     8


ans =

  1×10 logical array

   0   1   1   1   1   1   0   1   0   1


ans =

     9    10     7     8     8     7     8
...