基于字典约束背景表示学习的广义非凸高光谱异常检测附matlab代码

 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,

代码获取、论文复现及科研仿真合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab完整代码及仿真定制内容点击👇

智能优化算法       神经网络预测       雷达通信      无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机

🔥 内容介绍

低秩张量表示(LRTR)方法因其分离背景和异常的强大能力而引起了人们的极大兴趣。然而,当前的 LRTR 模型大多数使用流行的凸代理张量核范数(TNN)来解决优化问题,这导致原始问题的近似松散和次优求解器。此外,大多数现有方法都逐案求解非凸优化问题,从而失去了一个统一的求解器。为了解决上述问题,我们提出了用于高光谱异常检测(HAD)的广义非凸低秩张量表示(GNLTR),这是一种统一的求解器,而不是现有非凸优化问题的具体问题之一。与TNN相比,GNLTR 包含许多流行的非凸罚函数,作为张量管状秩的更严格的正则化器,以约束背景的低秩。此外, L2 , 1 范数已集成到稀疏异常的 GNLTR 模型中。对于优化问题,通过组织良好的交替方向乘子法(ADMM)可以快速有效地处理。在几个真实世界高光谱数据集上的实验证明了 GNLTR 模型与一些最先进的异常检测(AD)模型相比具有优越的性能。

📣 部分代码

function [A, L, S] = CF2_GNBRL_solver(X, A)psi = 'CapL1'; tol = 1e-2; alpha = [1, 1, 1]/3; maxit = 50;Beta = 0.05; rho = 1.3; lambda = [0.5, 0.05];%% Data preprocessing and initializationNway = size(X); n1 = Nway(1); n2 = Nway(2); n3 = Nway(3); r = n2;L = ones(r, n2, n3); hat_L = L; L0 = L;hat_A = A; A0 = A;S = X - A;for u = 1:3 T{u} = zeros(n1, r, n3);    beta(u) = 1e-4;endfor u = 1:3    C{u} = diff(A, 1, u);endC{1}(n1, :, :) = A(1, :, :) - A(end, :, :);C{2}(:, r, :) = A(:, 1, :) - A(:, end, :);C{3}(:, :, n3) = A(:, :, 1) - A(:, :, end);epsilon = eps; l0 = 1; rw = 0.9999; gamma = 1.0001;L_A0 = 1; L_L0 = 1;%%Eny_x = (abs(psf2otf([+1; -1], [n1, r, n3]))).^2;Eny_y = (abs(psf2otf([+1, -1], [n1, r, n3]))).^2;Eny_z = (abs(psf2otf([+1, -1], [r, n3, n1]))).^2;Eny_z = permute(Eny_z, [3, 1, 2]);fprintf('Iteration:     ');for t = 1:maxit    fprintf('\b\b\b\b\b%5i', t);    S0 = S;    %% update A    L_A = tsn(L)^2 + epsilon;    nabla_fA = tprod(tprod(hat_A, L)+S-X, tran(L));    LAf = L_A * hat_A - nabla_fA;    for u = 1:3 CT{u} = beta(u) * C{u} - T{u}; end    diffHCT = diffH3(CT, [n1, r, n3]);    A = real(ifftn(fftn(diffHCT+Beta*LAf)./(Beta * L_A + beta(1) * Eny_x + beta(2) * Eny_y + beta(3) * Eny_z)));    %% 计算差分 nabla_A    for u = 1:3        nabla_A{u} = diff(A, 1, u);    end    nabla_A{1}(n1, :, :) = A(1, :, :) - A(end, :, :);    nabla_A{2}(:, r, :) = A(:, 1, :) - A(:, end, :);    nabla_A{3}(:, :, n3) = A(:, :, 1) - A(:, :, end);    %% update C_u    for u = 1:3        nabla_ATu = nabla_A{u} + T{u} / beta(u);        [C{u}, ~, ~] = prox_tnn_psi(nabla_ATu, alpha(u)/beta(u), psi);    end    %% update L    nabla_fL = tprod(tran(A), tprod(A, hat_L)+S-X);    L_L = gamma * tsn(A)^2 + epsilon;    Lnabla_f = hat_L - nabla_fL / L_L;    [L, ~, ~] = prox_tnn_psi(Lnabla_f, lambda(1)/L_L/Beta, psi);    %% update S    Z = X - tprod(A, L);    for i = 1:n1        for j = 1:n2            z = Z(i, j, :);            norm_z = norm(z(:));            ss = z / norm_z * prox_psi(norm_z, lambda(2)/Beta, psi);            S(i, j, :) = ss;        end    end    %% update T_u and beta(u)    for u = 1:3        T{u} = T{u} + beta(u) * (nabla_A{u} - C{u});        beta(u) = rho * beta(u);    end    Beta = min(1.5*Beta, 1e8);    %% do extrapolation    l = (1 + sqrt(1+4*l0^2)) / 2;    w = (l0 - 1) / l; % extrapolation weight%        w = 0;  %  no acceleration    wA = min([w, rw * sqrt(L_A0/L_A)]);    cgamma = max((gamma - 1)/2/gamma, 0.99^t);    wL = min([w, cgamma * rw * sqrt(L_L0/L_L)]);    hat_A = A + wA * (A - A0);    hat_L = L + wL * (L - L0);    % store old update    l0 = l; A0 = A; L_A0 = L_A; L0 = L; L_L0 = L_L;    %% judge whether converges    vartheta2 = 0;    for u = 1:3        vartheta2 = max(vartheta2, norm(nabla_A{u}(:)-C{u}(:))/norm(C{u}(:)));    end    if vartheta2 < tol        % Compute vartheta_A        DT = diffH3(T, [n1, r, n3]); nabla_fA = tprod(tprod(A, L)+S-X, tran(L));        vartheta_A = norm(DT(:)+Beta*nabla_fA(:)) / (1 + norm(DT(:))^2 + norm(Beta*nabla_fA(:))^2);        % Compute vartheta_L        nabla_fL = tprod(tran(A), tprod(A, L)+S-X);        [eL, ~, ~] = prox_tnn_psi(L-Beta*nabla_fL, lambda(1), psi);        vartheta_L = norm(L(:)-eL(:)) / (1 + norm(L(:))^2 + norm(Beta*nabla_fL(:))^2);        % Compute vartheta_S        nabla_fS = tprod(A, L) + S - X; eZ = S - Beta * nabla_fS;        for i = 1:n1            for j = 1:n2                ez = eZ(i, j, :);                norm_ez = norm(ez(:));                ss = ez / norm_ez * prox_psi(norm_ez, lambda(2), psi);                eS(i, j, :) = ss;            end        end        vartheta_S = norm(S(:)-eS(:)) / (1 + norm(S(:))^2 + norm(Beta*nabla_fS(:))^2);        % Compute vartheta_Cu        vartheta_C = 0;        for u = 1:3            eC = prox_tnn_psi(C{u}+T{u}, alpha(u), psi);            vartheta_C = max(vartheta_C, norm(C{u}(:)-eC(:))/(1 + norm(C{u}(:))^2 + norm(T{u}(:)))^2);        end        vartheta1 = [vartheta_A, vartheta_L, vartheta_S, vartheta_C];        if max(vartheta1(:)) < 1e-1            break;        end    end    %    res = norm(S(:)-S0(:)) / norm(S0(:));%         resa(t) = AUC(S, mask)endend

⛳️ 运行结果

🔗 参考文献

[1] Qin H , Shen Q , Zeng H ,et al.Generalized Nonconvex Low-Rank Tensor Representation for Hyperspectral Anomaly Detection[J].IEEE Transactions on Geoscience and Remote Sensing, 61[2024-01-25].DOI:10.1109/TGRS.2023.3321789.

🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁  关注我领取海量matlab电子书和数学建模资料

👇  私信完整代码、论文复现、期刊合作、论文辅导及科研仿真定制

1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化
5 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
9 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 26
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值