Извлечение коэффициентов или проекций вейвлета двойного дерева/двойной плотности
извлекает коэффициенты или проекции подпространства из 1-D или 2-D разложения вейвлет, out
= dddtreecfs(outputtype
,wt
,outputspec
,outputindices
)wt
. Если outputtype
равен 'e'
, out
содержит вейвлет или масштабирующие коэффициенты. Если outputtype
равен 'r'
, out
содержит вейвлет или масштабирующие подпространственные проекции (реконструкции).
строит графики сигнала или реконструкции изображения или заданных коэффициентов анализа. Можно включать out
= dddtreecfs(outputtype
,wt
,outputspec
,outputindices
,'plot')'plot'
опция в любом месте после wt
вход.
Получите комплексное двухдревовидное вейвлет 1-D шумного доплеровского сигнала. Восстановите приближение, основанную на коэффициентах детализации уровня три, несколькими способами.
Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.
load noisdopp; wt = dddtree('cplxdt',noisdopp,3,'dtf1')
wt = struct with fields:
type: 'cplxdt'
level: 3
filters: [1x1 struct]
cfs: {1x4 cell}
Постройте график восстановления исходного сигнала на основе коэффициентов детализации уровня три с outputspec
установлено на 'scale'
.
xr = dddtreecfs('r',wt,'scale',{3},'plot');
Область выхода xr
- массив ячеек 1 на 1. Сгенерируйте ту же реконструкцию при помощи 'cumind'
и древовидные узлы уровня три. Первый элемент каждого вектора в массиве ячеек обозначает уровень, а второй элемент обозначает дерево. Подтвердите, что реконструкции идентичны.
outputindices = {[3 1];[3 2]}; xr2 = dddtreecfs('r',wt,'cumind',outputindices); max(abs(xr2-xr{1}))
ans = 0
Область выхода xr2
является тем же типом данных, что и исходный сигнал.
Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.
load noisdopp; wt = dddtree('cplxdt',noisdopp,3,'dtf1')
wt = struct with fields:
type: 'cplxdt'
level: 3
filters: [1×1 struct]
cfs: {[1×512×2 double] [1×256×2 double] [1×128×2 double] [1×128×2 double]}
Создайте массив ячеек из векторов, чтобы получить коэффициенты детализации второго и третьего уровня из каждого из вейвлета деревьев фильтров.
outputindices = {[2 1]; [2 2]; [3 1]; [3 2]};
Первый элемент каждого вектора в массиве ячеек обозначает уровень, или каскад. Второй элемент обозначает дерево.
Извлеките коэффициенты детализации.
detailCoeffs = dddtreecfs('e',wt,'ind',outputindices,'plot');
Область выхода detailCoeffs
- массив ячеек 1 на 4. Элементы массива ячеек содержат коэффициенты вейвлета, соответствующие элементам в outputindices
. Для примера подтвердите detailCoeffs{1}
содержит коэффициенты детализации второго уровня из первого дерева.
max(abs(wt.cfs{2}(1,:,1)-detailCoeffs{1}))
ans = 0
Загрузите шумный сигнал Доплера. Получите комплексное преобразование двойственного дерева до уровня 3.
load noisdopp; wt = dddtree('cplxdt',noisdopp,3,'dtf1');
Создайте массив ячеек из векторов, чтобы получить коэффициенты детализации второго и третьего уровня из каждого из вейвлета деревьев фильтров.
outputindices = {[2 1]; [2 2]; [3 1];[3 2]};
Первый элемент каждого вектора в массиве ячеек обозначает уровень, или каскад. Второй элемент обозначает дерево.
Создайте массив структур, идентичный wt
выход dddtree
при всех коэффициентах, равных нулю, кроме коэффициентов детализации второго и третьего уровня.
out = dddtreecfs('e',wt,'cumind',outputindices,'plot');
Сгенерируйте реконструкцию на основе коэффициентов детализации второго и третьего уровня.
xr = idddtree(out);
Сгенерируйте две реконструкции, основанные на коэффициентах детализации второго и третьего уровня. Подтвердите, что сумма двух восстановлений идентична xr
.
xr2 = dddtreecfs('r',wt,'scale',{2;3}); max(abs(xr-(xr2{1}+xr2{2})))
ans = 8.8818e-16
Используйте комплексное двухдревовидное вейвлет, чтобы изолировать диагональные функции на изображении при + 45 и -45 степенях .
Загрузите и отобразите xbox
изображение.
load xbox
imagesc(xbox)
Получите комплексный двухдревовидный вейвлет преобразования до уровня 3.
fdf = dtfilters('FSfarras'); df = dtfilters('qshift10'); wt = dddtree2('cplxdt',xbox,3,fdf,df);
Изолируйте функции диагонального изображения + 45 и -45 в вейвлет-коэффициентах первого уровня. Сделайте это, создав массив ячеек из векторов, задающих узлы дерева, содержащие детали диагонали. Первый элемент в векторе задает уровень. Три остальных элемента задают ориентацию, вейвлет и действительную и мнимую части, соответственно (см dddtree2
).
outputindices = {[1 3 1 1];[1 3 1 2];[1 3 2 1];[1 3 2 2]}; out = dddtreecfs('e',wt,'ind',outputindices,'plot');
Этот пример показывает, как коэффициенты анализа распределены, в зависимости от преобразования, в древовидном выходе dddtree
и dddtree2
.
1-D вейвлет
Нагрузка в шумном доплеровском сигнале. Сгенерируйте четырехуровневое вейвлет сигнала для каждого типа преобразования. В зависимости от преобразования, различные размерности массивов коэффициентов соответствуют ориентации, вейвлет или вещественной и мнимой частям.
Критически выбранное дискретное преобразование вейвлета
load noisdopp wt = dddtree('dwt',noisdopp,4,'sym4')
wt = struct with fields:
type: 'dwt'
level: 4
filters: [1x1 struct]
cfs: {1x5 cell}
Это обычное нерезервированное дискретное вейвлет. Первые четыре элемента wt.cfs
являются вейвлет. Пятый элемент является коэффициентами масштабирования.
Преобразование Вейвлета двойной плотности
wt = dddtree('ddt',noisdopp,4,'filters1')
wt = struct with fields:
type: 'ddt'
level: 4
filters: [1x1 struct]
cfs: {1x5 cell}
Третья размерность массивов коэффициентов 3-D вейвлетов соответствует дереву. Пятый элемент является коэффициентами масштабирования.
Двухдревовидный комплексный Вейвлет преобразование
wt = dddtree('cplxdt',noisdopp,4,'dtf1')
wt = struct with fields:
type: 'cplxdt'
level: 4
filters: [1x1 struct]
cfs: {1x5 cell}
Третья размерность всех трехмерных массивов в cfs
соответствует действительной и мнимой частям. Первые четыре элемента cfs
являются вейвлет и cfs{5}
являются коэффициентами масштабирования.
Восстановите сигналы из коэффициентов в узлах дерева [1 1]
, [5 2]
, [3 1]
, и [4 2]
. Постройте график сигналов. Выход является массивом ячеек, содержащим реконструкции. Реконструкции имеют ту же длину, что и исходный сигнал.
outputindices = {[1 1];[5 2];[3 1];[4 2]}; XR = dddtreecfs('r',wt,'plot','ind',outputindices);
Извлеките и постройте график коэффициентов, используемых для восстановления сигналов. Выход является массивом ячеек, содержащим коэффициенты соответствующей длины: 512, 64, 128 и 64.
XR = dddtreecfs('e',wt,'plot','ind',outputindices);
Теперь используйте 'cumind'
вместо 'ind'
. Область выхода XR
является сигналом длины 1024 в первом случае и a 'cplxdt'
двойственное дерево во втором.
XR = dddtreecfs('r',wt,'plot','cumind',outputindices);
XR = dddtreecfs('e',wt,'plot','cumind',outputindices);
Двойное древовидное преобразование Вейвлета двойной плотности
wt = dddtree('cplxdddt',noisdopp,4,'dddtf1')
wt = struct with fields:
type: 'cplxdddt'
level: 4
filters: [1x1 struct]
cfs: {1x5 cell}
Третья размерность массивов коэффициентов 4-D вейвлетов соответствует дереву. Четвертая размерность в массивах коэффициентов 4-D вейвлетов и третья размерность в массиве коэффициентов масштабирования 3-D соответствует вещественной и мнимой частям.
2-D вейвлет
Загрузите изображение маски 256 на 256. Сгенерируйте двухуровневое вейвлет изображения для каждого типа преобразования. Наблюдайте размерности выходных коэффициентов.
Критически выбранное дискретное преобразование вейвлета
load mask im = X; wt = dddtree2('dwt',im,3,'sym4')
wt = struct with fields:
type: 'dwt'
level: 3
filters: [1x1 struct]
cfs: {1x4 cell}
sizes: [10x2 double]
Это обычное нерезервное 2-D дискретное вейвлет. Третья размерность в массивах коэффициентов 3-D вейвлетов соответствует ориентации. Коэффициенты масштабирования являются последним элементом cfs
.
Реальное ориентированное двойственное древовидное вейвлет
wt = dddtree2('realdt',im,3,'dtf1')
wt = struct with fields:
type: 'realdt'
level: 3
filters: [1x1 struct]
cfs: {1x4 cell}
sizes: [11x2 double]
Четвертая размерность в массивах коэффициентов 4-D вейвлетов и третья размерность в массиве коэффициентов масштабирования 3-D соответствуют дереву. Третья размерность в массивах коэффициентов 4-D вейвлетов соответствует ориентации.
Комплексно-ориентированное двухдревовидное вейвлет
wt = dddtree2('cplxdt',im,3,'dtf1')
wt = struct with fields:
type: 'cplxdt'
level: 3
filters: [1x1 struct]
cfs: {[5-D double] [5-D double] [5-D double] [32x32x2x2 double]}
sizes: [11x2 double]
[size(wt.cfs{1});size(wt.cfs{2});size(wt.cfs{3})]
ans = 3×5
128 128 3 2 2
64 64 3 2 2
32 32 3 2 2
Третья размерность массивов коэффициентов 5-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 5-D и третья размерность в массиве 4-D коэффициентов масштабирования представляет дерево. Пятая размерность в массивах 5-D и четвертая размерность в массиве 4-D представляют действительную и мнимую части.
Преобразование Вейвлета двойной плотности
wt = dddtree2('ddt',im,3,'filters1')
wt = struct with fields:
type: 'ddt'
level: 3
filters: [1x1 struct]
cfs: {1x4 cell}
sizes: [26x2 double]
Третья размерность в массивах коэффициентов 3-D вейвлетов представляет ориентацию.
Действительное преобразование вейвлета двойной плотности
wt = dddtree2('realdddt',im,3,'self1')
wt = struct with fields:
type: 'realdddt'
level: 3
filters: [1x1 struct]
cfs: {1x4 cell}
sizes: [26x2 double]
Третья размерность в массивах коэффициентов 4-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 4-D и третья размерность в массиве 3-D коэффициентов масштабирования представляют дерево.
Комплексно-ориентированное Вейвлетом преобразование двойной плотности
wt = dddtree2('cplxdddt',im,3,'self1')
wt = struct with fields:
type: 'cplxdddt'
level: 3
filters: [1x1 struct]
cfs: {[5-D double] [5-D double] [5-D double] [32x32x2x2 double]}
sizes: [26x2 double]
[size(wt.cfs{1}) ; size(wt.cfs{2}) ; size(wt.cfs{3})]
ans = 3×5
128 128 8 2 2
64 64 8 2 2
32 32 8 2 2
Третья размерность массивов коэффициентов 5-D вейвлетов представляет ориентацию. Четвертая размерность в массивах 5-D и третья размерность в массиве 4-D коэффициентов масштабирования представляет дерево. Пятая размерность в массивах 5-D и четвертая размерность в массиве 4-D представляют действительную и мнимую части.
Восстановите и постройте два изображения на основе коэффициентов детализации второго уровня и коэффициентов масштабирования, соответственно.
XR = dddtreecfs('r',wt,'plot','scale',{2;4});
Область выхода XR
- массив ячеек, содержащий оба изображения 256 на 256.
Извлеките коэффициенты, используемые для создания двух изображений. Выходы представляют собой массив ячеек, содержащий две двухдревовидные структуры, по одной для каждого заданной шкалы.
XR = dddtreecfs('e',wt,'scale',{2;4}); XR{1}
ans = struct with fields:
type: 'cplxdddt'
level: 3
filters: [1x1 struct]
cfs: {[5-D double] [5-D double] [5-D double] [32x32x2x2 double]}
sizes: [26x2 double]
XR{2}
ans = struct with fields:
type: 'cplxdddt'
level: 3
filters: [1x1 struct]
cfs: {[5-D double] [5-D double] [5-D double] [32x32x2x2 double]}
sizes: [26x2 double]
Подтвердите единственные ненулевые коэффициенты в каждой структуре, содержащейся в XR
являются коэффициентами вейвлета уровня два и коэффициентами масштабирования, соответственно.
dtInd = 1;
[max(abs(XR{dtInd}.cfs{1}(:)));max(abs(XR{dtInd}.cfs{2}(:)));...
max(abs(XR{dtInd}.cfs{3}(:)));max(abs(XR{dtInd}.cfs{4}(:)))]
ans = 4×1
0
143.9924
0
0
dtInd = 2;
[max(abs(XR{dtInd}.cfs{1}(:)));max(abs(XR{dtInd}.cfs{2}(:)));...
max(abs(XR{dtInd}.cfs{3}(:)));max(abs(XR{dtInd}.cfs{4}(:)))]
ans = 4×1
103 ×
0
0
0
1.0545
Использование 'ind'
для восстановления и отображения четырех изображений на основе четырех компонентов lowpass, соответственно.
outputindices = {[4 1 1];[4 2 1];[4 1 2];[4 2 2]}; XR = dddtreecfs('r',wt,'plot','ind',outputindices);
Область выхода XR
- массив ячеек, содержащий четыре изображения. Каждое изображение 256 на 256. Отобразите коэффициенты, используемые для восстановления изображений.
XR = dddtreecfs('e',wt,'plot','ind',outputindices);
Область выхода XR
- массив ячеек, содержащий четыре lowpass компонента. Каждый компонент 32 на 32.
outputtype
- Тип выхода'e'
| 'r'
Выход, заданный как 'e'
или 'r'
. Использование 'e'
для получения масштабирования или вейвлет. Использование 'r'
для получения проекции или реконструкции на соответствующее подпространство масштабирования или вейвлет.
wt
- ВейвлетВейвлет, заданное как структура. Массив структур является выходом из dddtree
или dddtree2
.
outputspec
- Спецификация выхода'lowpass'
| 'scale'
| 'ind'
| 'cumind'
Выходные спецификации, заданные как один из 'lowpass'
, 'scale'
, 'ind'
, или 'cumind'
. Спецификации выхода определяются следующим образом:
'lowpass'
- Выводит lowpass, или масштабирование, коэффициенты или приближение сигнал/изображение на основе коэффициентов масштабирования. Если вы устанавливаете спецификацию выхода равной 'lowpass'
, не задавать outputindices
. Если на outputtype
является 'e'
, out
- массив структур с полями, идентичными входному массиву структур wt
кроме того, что все вейвлету (подробные) коэффициенты равны нулю. Если на outputtype
является 'r'
, out
- сигнал или приближение изображения, основанная на коэффициентах масштабирования. Сигнал или приближение изображения равны в размере исходному входу dddtree
или dddtree2
.
'scale'
- Выводит коэффициенты или приближение сигнала/изображения на основе шкал, заданных в outputindices
. Если на outputtype
является 'e'
, out
- массив ячеек из массивов структур. Поля массивов структур в out
идентичны полям входного массива структур wt
. Коэффициенты в cfs
все поле равно нулю, кроме коэффициентов, соответствующих шкалам в outputindices
. Если на outputtype
является 'r'
, out
- сигнал или приближение изображения на основе шкал в outputindices
. Сигнал или приближение изображения равны в размере исходному входу dddtree
или dddtree2
.
'ind'
- Выводит коэффициенты или приближение сигнала/изображения на основе индексов положения дерева, заданных в outputindices
. Если на outputtype
является 'e'
, out
- массив ячеек из векторов или матриц, содержащий коэффициенты, заданные индексами положения дерева в outputindices
. Если на outputtype
является 'r'
, out
- массив ячеек из векторов или матриц, содержащий сигнал или приближения изображения на основе соответствующих индексов положения дерева в outputindices
.
'cumind'
- Выводит коэффициенты или приближение сигнала/изображения на основе индексов положения дерева, заданных в outputindices
. Если на outputtype
является 'e'
, out
является массивом структур. Поля массива структур идентичны полям массива входа структур wt
. Коэффициенты в cfs
Все поля равны нулю, кроме коэффициентов, соответствующих древовидным позициям в outputindices
. Если на outputtype
является 'r'
, out
- сигнал или приближение изображения, основанная на коэффициентах, соответствующих индексам положения дерева в outputindices
.
Пример: 'ind',{[1 1]; [1 2]}
outputindices
- Выходные индексыВыходные индексы, заданные как массив ячеек со скалярными или векторными элементами. Если outputspec
равен 'scale'
скалярный элемент выбирает соответствующий элемент в cfs
область wt
. Если outputspec
равен 'ind'
или 'cumind'
, элементы outputspec
являются векторы-строки. Первый элемент вектора-строки соответствует элементу в cfs
область wt
. Последующие элементы вектора-строки соответствуют индексам массива, содержащегося в элементе массива ячеек. Описание последующих элементов смотрите в Распределение коэффициентов анализа в древовидной структуре вейвлета. Для получения дополнительной информации см. dddtree
и dddtree2
.
Пример: 'scale',{1;2;3}
out
- Сигнал или реконструкция изображения или коэффициентыСигнал или реконструкция изображения или коэффициенты, возвращенные в виде вектора, матрицы, массива структур, массива ячеек векторов или матриц или массива ячеек массивов структур. Форма out
зависит от значения outputspec
и outputindices
.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.