Matlab Как отсортировать и отобразить IV для уникальных значений H - PullRequest
0 голосов
/ 13 ноября 2018

H = [500 500 500 450 450 450 400 400 350 350 350 300 300 300];

I = [-0,0019 -0,0018 -0,0017 -0,0019 -0,0018 -0,0017 -0,0019 -0,0018 -0,0017]

V = [-7,54E-06 -7,23E-06 -6,93E-06 -7,53E-06 -7,21E-06 -6,89E-06 -6.60E-06 -7.50E-06 -7.23E- 06 -6.90E-06]

Необходимо отсортировать данные и получить IV для каждого значения, но затем объединить уникальность их значения, например, я хочу, чтобы все IV для H были равны 400 и т. Д. Я знаю, что в Matlab есть уникальная функция , но это дает мне только один элемент массива, который является уникальным. Есть ли способ перебрать уникальные значения, чтобы получить значения IV? Я уже знаю об уникальной функции в Matlab. Спасибо!

1 Ответ

0 голосов
/ 13 ноября 2018

Предполагая, что ваши векторы имеют одинаковое количество элементов (то есть каждое значение в H имеет соответствующее значение в I и V), один из способов сделать это - использовать unique для получения значений индекса для группировок в H и splitapply для сбора значений I и V в массиве ячеек на основе этого индекса:

>> I = [I 0 0 0 0 0]; V = [V 0 0 0 0];  % Pad your sample data with zeroes at the end
>> [Hvalues, ~, index] = unique(H);
>> IV = splitapply(@(x) {x}, [I(:) V(:)], index)

IV =

  5×1 cell array

    [3×2 double]
    [3×2 double]
    [2×2 double]
    [3×2 double]
    [3×2 double]

>> IV{Hvalues == 400}  % I (first column) and V (second column) values for H = 400

ans =

  -0.001900000000000  -0.000006600000000
  -0.001800000000000  -0.000007500000000
...