0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
1

Как вычислить одномерное дискретное вейвлет преобразование в matlab?

27.01.2014, 00:12. Показов 5348. Ответов 13
Метки нет (Все метки)

В текстовом файле дискретный сигнал (поточечный : 2 координаты ) .Как произвести одномерное вейвлет преобразование для этого сигнала с помощью Wavelet Toolbox . Матлаб воспринимает поточечный сигнал как 2 мерный и не вычисляет
Вложения
Тип файла: txt Дискретный сигнал.txt (8.7 Кб, 72 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2014, 00:12
Ответы с готовыми решениями:

Непрерывное одномерное преобразование (вейвлет анализ).
C = cwt(S, SCALES, 'wname') – возвращает коэффициенты 'c' прямого НВП вещественного или...

Дискретное прямое вейвлет преобразование
Здравствуйте, тема такая - Дискретное прямое вейвлет преобразование(дальше мое описание{то как я...

Как в Matlab сделать вейвлет преобразование?
Привет всем, как в Matlab сделать вейвлет преобразование? я загрузил эталоны, то есть сигналы(7...

Дискретное вейвлет - преобразование
ДВП для cos(t) например работает, а когда я пытаюсь вместо cos(t) подставить массив дискретных...

13
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
27.01.2014, 12:56 2
Лучший ответ Сообщение было отмечено alexmander как решение

Решение

Я не большой специалист по вейвлетам, но вот что мне удалось выудить из хелпа:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
clear, clc
 
M = load('Дискретный сигнал.txt');
x = M(:,1);
y = M(:,2);
plot(x,y)
 
t = linspace(min(x),max(x),length(y)); % равномерная сетка времени
yi = spline(x,y,t); % интерполируем
k = 1:5; % scale
U = cwt(yi,k,'haar'); 
plot(t,U)
legend( strcat('n=',num2str(k')) )
Как вычислить одномерное дискретное вейвлет преобразование в matlab?


описание одномерного непрерывного вейвлет преобразования cwt (рус, eng)

*так как шаг времени был неравномерный, я вначале интерполировал для равномерной сетки
1
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
27.01.2014, 18:38  [ТС] 3
Колоссальное спасибо.)) Очень выручили!!!
0
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 13:11  [ТС] 4
Скажите пожалуйста товарищ Зосима ,а как для каждого k нормировать на максимум функцию U ?
0
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
30.01.2014, 14:06 5
alexmander, хм, U-это матрица, где каждый столбец соответствует своему k, поэтому технически нужно каждый столбец поделить на максимум в этом столбце, а практически для этого нужно создать вспомогательную матрицу такого же размера как U, где каждый столбец - максимум этого столбца, а затем поэлементно поделить U на эту матрицу:
Matlab M
1
2
3
m = max(U); % находим максимумы в каждом столбце
Q = ones(size(U,1),1)*m % формируем вспомогательную матрицу;
Z = U./Q; % нормируем
1
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 14:22  [ТС] 6
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear, clc
 
M = load('Дискретный сигнал.txt');
x = M(:,1);
y = M(:,2);
plot(x,y)
 
t = linspace(min(x),max(x),length(y)); % равномерная сетка времени
yi = spline(x,y,t); % интерполируем
k = 1:5; % scale
U = cwt(yi,k,'haar');
m = max(U); % находим максимумы в каждом столбце
Q = ones(size(U,1),1)*m; % формируем вспомогательную матрицу;
Z = U./Q; % нормируем
plot(t,Z)
legend( strcat('n=',num2str(k')) )
фактически я хотел просто пронормировать функцию U при различных k и построить эти функции ,но при данном коде матлаба собственно получаем:
Миниатюры
Как вычислить одномерное дискретное вейвлет преобразование в matlab?  
0
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 14:27  [ТС] 7
Ведь мы после нормировки и построения должны получить теже 5 функции отнормированных на каждый свой максимум,а получается не совсем то что ожидалось.Как стоит изменить предыдущий код чтобы получить нужный результат ?
0
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
30.01.2014, 14:34 8
ааа! максимум нужно было брать из модуля
в 12й строке: m = max(abs(U));

Добавлено через 3 минуты
единственное, мне кажется что эти 5 функций, это нечто одно и тоже, только масштабированное (k это scale factor) и после нормировки все кривые могут совпасть
0
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 14:43  [ТС] 9
Мне как раз интересно сравнить данные сигналы при различных k то есть при различных порядках добеши при нормировке на их максимумы (с самого начала была уверенность в совпадении сигналов на максимуме,интересно поведение функции на остальных участках),но получил только что при при исправлении в m = max(abs(U)) .Кошмарный сон . Где то кроется подвох с этой нормировки .
Миниатюры
Как вычислить одномерное дискретное вейвлет преобразование в matlab?  
0
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
30.01.2014, 14:54 10
не вижу подвоха все значения стали в диапазоне [1, -1]
0
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 14:58  [ТС] 11
Но разве вид не должен остаться прежним ? должны уменьшиться амплитуды на остальных участках ,а на максимуме будет пик в единице . Что то тут не так.
0
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
30.01.2014, 15:07 12
хм... для пробы попробуй написать в 11й строке:
U = cwt(yi,k,'haar')';
(добавил штрих вконце)
0
0 / 0 / 0
Регистрация: 22.01.2014
Сообщений: 48
30.01.2014, 15:14  [ТС] 13
Все вижу результат ,спасибо второй глупый вопрос после этого а штрих что делает?
0
5203 / 3536 / 368
Регистрация: 02.04.2012
Сообщений: 6,447
Записей в блоге: 17
30.01.2014, 19:43 14
штрих - это транспонирование, т.е. отображение относительно диагонали - была матрица 5х100, станет 100х5
вот и тут я думал, что в U 5 столбцов, и искал максимумы по столбцам, а видать было 5 строк
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2014, 19:43
Помогаю со студенческими работами здесь

Дискретное вейвлет-преобразование
Добрый день форумчане, помогите разобраться с дискретным вейвлет преобразование. Имеется...

Вейвлет-преобразование в Matlab
Здравствуйте! Нужна помощь. Что означают апроксимирующие и детализирующие коэффициенты, какую...

Дискретное преобразование Фурье. Расхождение с matlab
Добрый день. У меня проблема следующая. Пытаюсь реализовать ДПФ на С++, формулы взял из википедии....

Вейвлет-анализ. Как работает вейвлет-преобразование?
Помогите разобратся как работает вейвлет-преобразование Как программно реализовать я знаю. но не...

Как сделать дискретное преобразование Лапласа?
Как сделать дискретное преобразование лапласа в маткаде.

Как определить частоту сигнала, Дискретное преобразование Фурье
Добрый! Вопрос ламерский, делаю первые шаги в теме, прошу проявить терпение. Суть: На входе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru