%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Copyright (C) 2020 Zaiwen Wen, Haoyang Liu, Jiang Hu % % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see . % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Change log: % % 2017.6.10 (Chao Ma): % First version % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 初始化函数 % 在给定波形 $A$ 和采集信号 $y$ 的情况下为迭代进行初始化。我们只给出迭代格式,具体的原理在此省略,参见 % % C. Ma, X. Liu and Z. Wen, "Globally Convergent Levenberg-Marquardt Method % for Phase Retrieval," in _IEEE Transactions on Information Theory_, % vol. 65, no. 4, pp. 2343-2359, April 2019, doi: 10.1109/TIT.2018.2881187. %% 函数主体 function [ z0, info ] = Ini_C( y, A, times ) tic; [n,L]=size(A); m=L*n; %%% % $\displaystyle\lambda=\sqrt{\frac{\sum_{i=1}^{nL}y_i}{nL}},$ 注意这里对于复数 $z$, % $\sqrt{z}=\sqrt{|z|}(\cos(\phi/2)+i\sin(\phi/2))$ 其中 $-\pi\le\phi\le\pi$ % 为复数 $z$ 的辐角。 lambda=sqrt(sum(y)/m); u=ones(n,1); %%% % 初始化迭代点。 % % 记 $F(\cdot)$ 为一维离散傅里叶变换,记 $F^{-1}(\cdot)$ 为一维离散逆傅里叶变换,令 % $d_\ell$ 为已知的采样信号, 令 $b$ 表示观测模长 ,则 % % $$ \displaystyle Y^k=\sum_{l=1}^L F^{-1}\left(F\left( \bar{d}_\ell \odot u^k % \right)\odot b_\ell\right). $$ % % 事实上,我们有 $\displaystyle Y^k=\frac{1}{m}\sum_{r=1}^mb_rd_rd_r^* u$(推导略)。 for k=1:times Y=zeros(n,1); for l=1:L Y=Y+A(:,l).*ifft(y((l-1)*n+1:l*n).*fft(conj(A(:,l)).*u))/L; end %%% % $u^{k+1}=Y^k/\|Y^k\|,$ % 利用幂法求矩阵 $\displaystyle \frac{1}{m}\sum_{r=1}^my_ra_ra_r^*$ % 最大特征值对应的特征向量。 u=Y/norm(Y); end %%% % 初始化的结果为 $z^0=\lambda u$,其中 $u$ % 为求得的最大特征值对应的特征向量, $\displaystyle % \lambda=\sqrt{\frac{\sum_{i=1}^{nL}y_i}{nL}}$。返回时间和矩阵向量积的次数。 z0=lambda*u/norm(u); info.toc=toc; info.prod=2*times; end %% 参考页面 % 此页面为编码衍射模型的初始化函数,我们在 % 中展示该模型的一个实例和不同解法在其中的表现。 % % 此页面的源代码请见: <../download_code/phase_LM/Ini_C.m Ini_C.m>。 %% 版权声明 % 此页面为《最优化:建模、算法与理论》、《最优化计算方法》配套代码。 % 代码作者:文再文、刘浩洋、户将,代码整理与页面制作:杨昊桐。 % % 著作权所有 (C) 2020 文再文、刘浩洋、户将