使用octave / matlab

时间:2019-05-22 18:13:56

标签: grouping categories octave

我已导入语音音频信号,并且尝试查找 t (时间线)的所有值以及它们的索引,其中 yy2 (音频信号)值相似。

我可以使用histc yy2 值分组,但如何获取,以便知道分组的 yy2 t 的值< / strong>值?

我应该使用histc,因为垃圾箱(绘图中使用的总条形)将超过10个吗?

我的想法到哪里:

  1. yy2 的相似值分组。
  2. 为每个相似的分组 yy2 值获取 t 值。

在下面的代码中,yy2模拟导入的音频信号

clear, clc, clf,close all

pkg load signal

fs_rate=8000
len_of_sig=1.5; %length of signal in seconds
t=linspace(0,len_of_sig,fs_rate*len_of_sig);
yy2=.5*sin(2*pi*3*t)+.3*sin(2*pi*2.2*t);

subplot(2,1,1);plot(t,yy2,'-*');
subplot(2,1,2);hist(yy2)

图: Plot

Ps:我正在使用与Matlab类似的Octave 4.2.2。

1 个答案:

答案 0 :(得分:1)

如果您希望索引和t值的组,其中yy2的值相似:

% Get uniqe valuse of yy2
unique_vals = unique(yy2);

% Get index groups for each unique yy2 value in a cell array
index_groups = arrayfun(@(v) find((yy2 == v)),unique_vals,'UniformOutput',false);

% Get t groups for each unique yy2 value in a cell array
t_groups = cellfun(@(v) t(v),index_groups,'UniformOutput',false);

% Get yy2 groups for each unique yy2 value in a cell array (not really required)
yy2_groups = cellfun(@(v) yy2(v),index_groups,'UniformOutput',false);