Несколько столбцов, способ выбора ближайшего к значению

Я пытаюсь проанализировать наборы данных, которые получены из файлов CSV. После того, как данные прочитаны в matlab, мне остается только переменная моих данных. Количество столбцов и строк изменяется между каждым файлом. Есть ли способ усреднить каждый столбец и затем создать переменную для столбца с ближайшим средним значением к определенному значению? а затем также выберите столбцы непосредственно до и после этого среднего столбца и создайте для них переменные, а также создайте переменную для столбца с самым низким средним значением? В настоящее время я выбираю столбцы вручную и таким образом создаю для них переменные.

Например:

У меня есть эта таблица чисел. (Я использовал одно и то же число в каждом столбце для удобства усреднения в этом примере.

    1     2     3     4     5     

    1     2     3     4     5

    1     2     3     4     5

    1     2     3     4     5

    1     2     3     4     5

Допустим, я хочу столбец, среднее значение которого близко к 3,2

Этот столбец будет столбцом 3 со средним значением 3. Тогда я бы хотел, чтобы код выбирал столбец до (столбец 2) и столбец после (столбец 4). А также столбец с самым низким средним (столбец 1)

1 ответ

Решение

Сначала получим средние значения (я предполагаю, что матрица данных находится в переменной X):

Xmns = mean(X);

Затем, чтобы найти минимум, используйте "min":

[val,ind] = min(Xmns);

"val" содержит минимальное значение, "ind" соответствующий индекс в Xmns, который является соответствующим столбцом.

Чтобы найти среднее значение столбца ближе к определенному значению, снова вы можете использовать min:

[val,ind] = min(abs(Xmns-key_val));

Теперь "ind" содержит индекс столбца со средним значением, ближайшим к "key_val". Следующий столбец - это просто "ind+1", а предыдущий "ind-1" - просто убедитесь, что вы не находитесь за пределами матрицы (т. Е. Ind может уже иметь значение 1 или размер (X,2)).

Также, учитывая индекс столбца "ind", чтобы создать новую переменную с этим столбцом, вы просто используете:

sc= X(:,ind);

и если вы хотите удалить этот столбец из X:

X(:,ind) = [];

и это все.

Другие вопросы по тегам