0

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.90 E-06]

需要对数据进行排序并为每个值获取一个 IV,然后将其值的唯一性集中起来,例如,我想要 H 的所有 IV 为 400,等等。我知道 Matlab 中有一个独特的函数,但是只给我一个唯一的数组元素。有没有办法遍历唯一值以获取 IV 值?我已经知道 Matlab 中的独特功能。谢谢!

4

1 回答 1

1

假设您的向量具有相同数量的元素(即 in 中的每个值在and中H都有相应的值),您可以做到这一点的一种方法是使用获取分组的索引值并收集基于该值的元胞数组中的值指数:IVuniqueHsplitapplyIV

>> 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
于 2018-11-13T19:31:36.207 回答