MATLAB的伴随重量3 _ _dwt3(3D 小波变换)算子

计算科学 matlab 小波
2021-12-02 00:07:48

如何计算 MATLABdwt3运算符的伴随?

换句话说,我如何计算以 3D 复数数组x作为输入并返回数量dwt3(x,'db4')作为输出的线性运算符的伴随。

这种伴随计算是许多迭代重建算法中的重要一步。

有人可能会猜测这idwt3是 的伴随dwt3,但以下代码似乎表明情况并非如此(除非我的代码包含错误):

sz = [384,300,144];

% Randomly generate a 3D complex array
x1 = randn(sz) + 1i*(randn(sz));

% Compute wavelet transform of x1
Wx1 = dwt3(x1,'db4');

% Randomly generate x2 which has the same size and shape as Wx1 (which is a Matlab structure)
x2 = Wx1;
for i1 = 1:2
    for i2 = 1:2
        for i3 = 1:2
            arrSz = size(x2.dec{i1,i2,i3});
            x2.dec{i1,i2,i3} = randn(arrSz) + 1i*randn(arrSz);
        end
    end
end

% Compute inverse wavelet transform of w2
WTransx2 = idwt3(x2);


% Check to see if the adjoint property <x1,WTransx2> = <Wx1,x2> is satisfied
prod1 = x1(:)'*conj(WTransx2(:));
prod2 = 0;
for i1 = 1:2
    for i2 = 1:2
        for i3 = 1:2

            Wx1_arr = Wx1.dec{i1,i2,i3};
            x2_arr = x2.dec{i1,i2,i3};
            prod2 = prod2 + Wx1_arr(:)'*conj(x2_arr(:));

        end
    end
end

max(abs(prod1 - prod2))
0个回答
没有发现任何回复~