MATLAB: создать новую матрицу из существующей матрицы в соответствии со спецификациями - PullRequest
3 голосов
/ 25 июня 2010

Предположим, у нас есть следующие данные:

H_T = [36 66 21 65 52 67 73; 31 23 19 33 36 39 42]
P   = [40 38 39 40 35 32 37]

Используя MATLAB 7.0, я хочу создать три новые матрицы, которые имеют следующие свойства:

Матрица H (первая часть в матрице H_T) будет разделена на 3 интервала:

  • Матрица 1: 1-й интервал содержит значения H от 20 до 40
  • Матрица 2: 2-й интервал содержит значения H от 40 до 60
  • Матрица 3: третий интервал содержит значения H от 60 до 80

Важно то, что соответствующие T и P также будут включены в их новые матрицы, что означает, что H будет контролировать новые матрицы в зависимости от спецификаций, определенных выше.

Итак, результирующие матрицы будут:

H_T_1 = [36 21; 31 19]
P_1   = [40 39]

H_T_2 = [52; 36]
P_2   = [35]

H_T_3 = [66 65 67 73; 23 33 39 42]
P_3   = [38 40 32 37] 

На самом деле, это простой пример, и легко создать новые матрицы в зависимости от спецификаций, НО в моих значениях у меня тысячи чисел, что делает это очень трудным.

1 Ответ

2 голосов
/ 25 июня 2010

Вот быстрое решение

[~,bins] = histc(H_T(1,:), [20 40 60 80]);

outHT = cell(3,1);
outP = cell(3,1);

for i=1:3
    idx = (bins == i);
    outHT{i} = H_T(:,idx);
    outP{i} = P(idx);
end

, тогда вы получите доступ к матрицам как:

>> outHT{3}
ans =
    66    65    67    73
    23    33    39    42
>> outP{3}
ans =
    38    40    32    37
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...