группирование одинаковых значений y и получение значений x - с использованием октавы / matlab - PullRequest
0 голосов
/ 22 мая 2019

Я импортировал голосовой аудиосигнал и пытаюсь найти все значения t (временная шкала) вместе с их индексами, где yy2 (аудиосигнал)значения одинаковы.

Я могу сгруппировать yy2 значения, используя histc, но как я могу получить его, чтобы я знал значения t для сгруппированных yy2 значения?

Должен ли я использовать для этого 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: я использую Octave 4.2.2, которая похожа на matlab.

1 Ответ

1 голос
/ 23 мая 2019

Если вам нужны группы индексов и значения 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...