Оценка распределения модуля мгновенных значений фонограммы
11.01.2023
Здравствуйте! Получил задание на разработку алгоритма и программы, реализующих оценку распределения модуля мгновенных значений фонограммы.
1) Разработать методику, алгоритм и программу оценки распределния модуля мгновенных значений фонограммы;
2) Разработать алгоритм определения моды распределния.
Может ли кто-нибудь, пожалуйста, помочь с программой в MATLAB, ибо я полный профан в этой области
Лучший ответ
В DSP тулбоксе есть аудиофайлик, его можно использовать для примера.
%%
audio = dsp.AudioFileReader('guitartune.wav', ...
'SamplesPerFrame',44100);
x = audio();
%Модули мгновенной амплитуды с вырезанной паузой (нулевыми значениями)
x=abs(x(x~=0));
%Гистограмма
histogram(x,'Normalization','pdf');
hold on
%Пусть это будет логнормальное распределение
pd = fitdist(x,'Lognormal');
%Можно pdf построить дополнитльно к гистограмме
x_vals = 0:0.01:0.5;
y = pdf(pd,x_vals);
plot(x_vals,y,'LineWidth',2)
%Мода
md = mode(x);
%Дорисовываем моду на графике
xline(md,'LineWidth',2,'LineStyle','--')
hold off
Ответы
Your writing is really informative, especially because it's so meaningful and updated. Thanks for sharing this wonderful post! Retro Bowl game
Вы бы сначала алгоритм подробный расписали - какие входные данные, какие формулы, тогда может и подсказать что-то получится.
Хотелось еще бы понять, что имеется в виду под оценкой распределения модулей? Нужно закон распределения получить? Есть ли какие-то сведения о возможном характере распределения?
Фонограмма - это звук какой-то?
Модуль - это на подобие выпрямленного сигнала?
Из того, что написано думается можно гистограмму для начала (ф-ции hist, bar, и т.п.)
А вот алгоритм "реализующий оценку распределения" - это либо что-то очень простое заумно написано, либо реально что-то крутое, но тогда нужна еще информация об этом всем.
В DSP тулбоксе есть аудиофайлик, его можно использовать для примера.
%%
audio = dsp.AudioFileReader('guitartune.wav', ...
'SamplesPerFrame',44100);
x = audio();
%Модули мгновенной амплитуды с вырезанной паузой (нулевыми значениями)
x=abs(x(x~=0));
%Гистограмма
histogram(x,'Normalization','pdf');
hold on
%Пусть это будет логнормальное распределение
pd = fitdist(x,'Lognormal');
%Можно pdf построить дополнитльно к гистограмме
x_vals = 0:0.01:0.5;
y = pdf(pd,x_vals);
plot(x_vals,y,'LineWidth',2)
%Мода
md = mode(x);
%Дорисовываем моду на графике
xline(md,'LineWidth',2,'LineStyle','--')
hold off
Задачка ИНТЕРЕСНАЯ, но исходные условия (термины и определения) не вполне ПОНЯТНЫЕ, поэтому про такие задачи обычно говорят, что "окончательные результат - не предсказуемы".
Судя по термину "фоно-грамма", речь идёт о ЗАПИСИ ЗВУКА в каком-то графическом отображении нот на числовой оси, а не "на бумажном носителе" - как это обычно делают композиторы на 5 линейках специальными "кружочками с хвостиками". Поэтому для анализа этой "задачки" потребуется СОВМЕЩЕНИЕ теории чисел с теорей музыки и аккустикой (в физическом смысле), а не просто некие "алгебраические" (или логарифмические) ГРАФИКИ в какой-то системе координат.
Гриша Перельман как-то высказал интересную мысль: "Математика - это музыка сфер", поэтому скорее всего эту "задачку" он бы решал в СФЕРИЧЕСКИХ координатах, а не в декартовых. А простейшим ГРАФИКОМ "криволинейных функции" является ОКРУЖНОСТЬ, на которой нужно РАЗМЕСТИТЬ (распределить) СЕМЬ основных нот + ПЯТЬ дополнительных (диезов и бемолей) - итого получается 12 полутонов! Но так как ПЕРЕХОД из одной октавы в другую является НЕПРЕРЫВНЫМ графом (в топологическом смысле), то последняя (седьмая) нота в первой октаве является первой нотой в следующей октаве: ... ... -до-ре-ми-фа-соль-ля-си-до... ... Связей (в виде точки перехода) ВОСЕМЬ, а число основных нот всего СЕМЬ (- 1)... Соответственно, в каждой ГАММЕ не по 12 полутонов, а по 11.
Такое соотношение нот (звуков) графически вписывается на линию полу-Окружности в виде 11 точек, а напрямую (по линии диаметра - в виде 7 точек (основных нот) и в цифровом виде выражается так же как "число ПИ" в натуральных числах = 22/7... На математическом форуме MATH10.com такое графическое отображение звуков дискутируется в специальной конференции уже более двух лет, но серьёзных (обоснованных) возражений пока не поступало. И даже более того - музыканты предлагают назвать такие точки перехода с одной ноты на другую Pi-muson - по аналогу с "пионом" (пи-мезоном) в Физике... Композиторы (и музыканты) РАЗЛИЧАЮТ одну ноту от другой даже "на слух"! Но не по громкости (силе звука), а именно по ЧАСТОТЕ, то есть как бы "по длине струны" (или волны)...
Если такие доводы "не лишены математического смысла", то можно попробовать СФОРМУЛИРОВАТЬ такой алгоритм и в математических терминах, но для этого НАДО ЗНАТЬ музыкальную грамоту - хотя бы "в общих чертах", а не на уровне Великих Композиторов!
https://www.math10.com/ru/forum/viewtopic.php?f=26&t=3326#p13300
Термин "МОДУЛЬ мгновенного значения" аналогичен понятию "геометрическая ТОЧКА (0D)"... Точки никаких раз-МЕРОВ не имеют (по Евклиду и Хаусдорфу), но "множество точек" на графике СУЩЕСТВУЕТ, поэтому они отображаются "кружочками". Расстояние (1D) МЕЖДУ точками можно принять за модуль частоты звука, то есть за вполне определённую НОТУ на определённой нотной линейке, тогда "мгновенное" значение - это РАЗНИЦА по частоте звучания (по тону-полутону) между соседними звуками. Как бы "пи в нулевой степени = 1", то есть ПАУЗА (разрыв между звуками), либо плавный переход (легато), либо наложение одного звука на другой... В геометрии это отображается как пересечение СФЕР либо их касание только в одной точке (без паузы)... Тогда это и есть тот самый "пи-музон" - как "мгновенный" переход с одной частоты звука на другую частоту (как на разных клавишах или струнах)...
Sure, I'd be happy to help you with that.
The first step would be to understand what a phonogram is and what you mean by the "module of instant phonogram values." A phonogram is typically a representation of sound, either in the form of an audio recording or a visual representation like a spectrogram. The "module of instant phonogram values" refers to the magnitude of the values at each point in time in the phonogram.
To calculate the module, you can use the absolute value function in MATLAB, which returns the magnitude of a complex number or the absolute value of a real number.
Here is an example MATLAB code for calculating the module of instant phonogram values:
% Load the phonogram data
phonogram = load('phonogram.mat');
% Calculate the module of the instant phonogram values
module = abs(phonogram);
% Plot the resulting module values
plot(module);
xlabel('Time (s)');
ylabel('Module Value');
For determining the distribution of the module of instant phonogram values, you can use the hist function in MATLAB to calculate the histogram of the module values. The histogram can give you an idea of the distribution of the module values, allowing you to see how frequently certain values occur in your data.
Here is an example MATLAB code for calculating the distribution of the module of instant phonogram values:
% Load the phonogram data
phonogram = load('phonogram.mat');
% Calculate the module of the instant phonogram values
module = abs(phonogram);
% Calculate the histogram of the module values
[counts, binCenters] = hist(module, 100);
% Plot the histogram
bar(binCenters, counts, 'hist');
xlabel('Module Value');
ylabel('Count');
For determining the mod of distribution, you can use the mode function in MATLAB to calculate the modal value, which is the value that occurs most frequently in the data.
Here is an example MATLAB code for determining the mod of distribution:
% Load the phonogram data
phonogram = load('phonogram.mat');
% Calculate the module of the instant phonogram values
module = abs(phonogram);
% Calculate the histogram of the module values
[counts, binCenters] = hist(module, 100);
% Determine the mod of distribution
[~, index] = max(counts);
mod = binCenters(index);
% Display the mod of distribution
disp(['Mod of Distribution: ', num2str(mod)]);
I hope this helps you get started on your project! If you have any questions or need further assistance, please let me know.
Henry | pool repair service winter park