干扰来向变化情况下的阵列天线Laplace零陷加宽算法

问题背景与理论基础

干扰抑制的挑战

在阵列天线信号处理中,传统自适应波束形成器对干扰来向变化非常敏感。当干扰方向发生微小变化时,传统算法形成的零陷可能无法有效抑制干扰。

classdef InterferenceScenario
    properties
        array_config      % 阵列配置
        signal_params     % 信号参数
        interference_params % 干扰参数
        motion_model      % 干扰运动模型
    end
    
    methods
        function obj = InterferenceScenario()
            % 初始化干扰场景
            obj.array_config = struct(...
                'N', 8, ...          % 阵元数
                'd', 0.5, ...        % 阵元间距(波长)
                'geometry', 'ULA' ... % 阵列几何
            );
            
            obj.signal_params = struct(...
                'theta_s', 30, ...   % 期望信号方向(度)
                'SNR', 20 ...        % 信噪比(dB)
            );
            
            obj.interference_params = struct(...
                'theta_i0', 60, ...  % 干扰初始方向
                'SIR', 0, ...        % 干信比(dB)
                'variation_range', 10, ... % 变化范围
                'variation_type', 'random' % 变化类型
            );
        end
    end
end

Laplace零陷加宽核心算法

传统Capon波束形成器

classdef LaplaceNullWidening
    properties
        N                   % 阵元数量
        d                   % 阵元间距
        lambda             % 波长
        theta_s            % 期望信号方向
        theta_i            % 干扰方向
        R                  % 采样协方差矩阵
        R_laplace          % Laplace加权协方差矩阵
        a                  % 导向矢量
        w                  % 波束形成权向量
    end
    
    methods
        function obj = LaplaceNullWidening(N, d, lambda, theta_s)
            obj.N = N;
            obj.d = d;
            obj.lambda = lambda;
            obj.theta_s = theta_s;
        end
        
        function a = steering_vector(obj, theta)
            % 计算导向矢量
            n = 0:obj.N-1;
            phase = 2*pi*obj.d/obj.lambda * n' * sind(theta);
            a = exp(1j*phase);
        end
        
        function R = compute_sample_covariance(obj, X)
            % 计算采样协方差矩阵
            % X: 接收数据矩阵 [N x snapshots]
            R = (X * X') / size(X, 2);
        end
        
        function R_laplace = laplace_weighted_covariance(obj, R, theta_i, sigma)
            % Laplace加权协方差矩阵计算
            % theta_i: 干扰中心方向
            % sigma: Laplace分布尺度参数,控制零陷宽度
            
            R_laplace = zeros(obj.N, obj.N);
            theta_range = theta_i - 15:0.5:theta_i + 15; % 角度范围
            
            for theta = theta_range
                % Laplace分布权重
                weight = 1/(2*sigma) * exp(-abs(theta - theta_i)/sigma);
                
                % 该方向的导向矢量
                a_theta = obj.steering_vector(theta);
                
                % 加权求和
                R_laplace = R_laplace + weight * (a_theta * a_theta');
            end
            
            % 添加原始协方差矩阵
            alpha = 0.1; % 正则化参数
            R_laplace = R + alpha * R_laplace;
        end
        
        function w = capon_beamformer(obj, R, theta_s)
            % Capon波束形成器
            a_s = obj.steering_vector(theta_s);
            w = (R \ a_s) / (a_s' / R * a_s);
        end
        
        function w = laplace_beamformer(obj, X, theta_i, sigma)
            % Laplace零陷加宽波束形成器
            
            % 计算采样协方差
            obj.R = obj.compute_sample_covariance(X);
            
            % 计算Laplace加权协方差
            obj.R_laplace = obj.laplace_weighted_covariance(obj.R, theta_i, sigma);
            
            % 计算权向量
            a_s = obj.steering_vector(obj.theta_s);
            obj.w = (obj.R_laplace \ a_s) / (a_s' / obj.R_laplace * a_s);
            w = obj.w;
        end
    end
end

完整的算法实现

主算法框架

classdef AdaptiveNullWideningSystem
    properties
        % 系统参数
        array_config
        algorithm_params
        environment_params
        
        % 算法实例
        beamformer
        performance_metrics
    end
    
    methods
        function obj = AdaptiveNullWideningSystem()
            % 初始化系统
            obj.array_config = obj.default_array_config();
            obj.algorithm_params = obj.default_algorithm_params();
            obj.environment_params = obj.default_environment_params();
            
            % 初始化波束形成器
            obj.beamformer = LaplaceNullWidening(...
                obj.array_config.N, ...
                obj.array_config.d, ...
                obj.array_config.lambda, ...
                obj.environment_params.theta_s);
        end
        
        function [w, performance] = process_interference_scenario(obj, scenario)
            % 处理干扰场景
            
            fprintf('处理干扰场景: 干扰方向变化范围 %.1f°\n', ...
                    scenario.interference_variation);
            
            % 生成接收数据
            [X, ground_truth] = obj.generate_received_data(scenario);
            
            % 应用不同算法
            results = struct();
            
            % 1. 传统Capon波束形成
            results.capon = obj.apply_capon_beamformer(X, scenario);
            
            % 2. Laplace零陷加宽
            results.laplace = obj.apply_laplace_beamformer(X, scenario);
            
            % 3. 对角加载
            results.diagonal = obj.apply_diagonal_loading(X, scenario);
            
            % 性能比较
            performance = obj.compare_performance(results, ground_truth);
            obj.performance_metrics = performance;
            
            w = results.laplace.weights;
        end
        
        function [X, ground_truth] = generate_received_data(obj, scenario)
            % 生成接收数据
            
            N = obj.array_config.N;
            snapshots = scenario.snapshots;
            theta_s = scenario.theta_s;
            theta_i = scenario.theta_i;
            
            % 生成信号
            s = sqrt(10^(scenario.SNR/10)) * exp(1j*2*pi*rand(1, snapshots));
            i = sqrt(10^(scenario.SIR/10)) * exp(1j*2*pi*rand(1, snapshots));
            noise = (randn(N, snapshots) + 1j*randn(N, snapshots)) / sqrt(2);
            
            % 导向矢量
            a_s = obj.beamformer.steering_vector(theta_s);
            a_i = obj.beamformer.steering_vector(theta_i);
            
            % 接收数据
            X = a_s * s + a_i * i + noise;
            
            ground_truth.signals = struct('s', s, 'i', i);
            ground_truth.steering_vectors = struct('a_s', a_s, 'a_i', a_i);
        end
        
        function result = apply_laplace_beamformer(obj, X, scenario)
            % 应用Laplace零陷加宽算法
            
            sigma = obj.algorithm_params.laplace_sigma;
            
            % 估计干扰方向
            theta_i_est = obj.estimate_interference_direction(X);
            
            % Laplace波束形成
            w = obj.beamformer.laplace_beamformer(X, theta_i_est, sigma);
            
            result.weights = w;
            result.theta_i_est = theta_i_est;
            result.beamformer = obj.beamformer;
        end
        
        function theta_i_est = estimate_interference_direction(obj, X)
            % 估计干扰方向(使用MUSIC算法)
            
            % 计算协方差矩阵
            R = obj.beamformer.compute_sample_covariance(X);
            
            % 特征分解
            [V, D] = eig(R);
            eigenvalues = diag(D);
            [~, idx] = sort(eigenvalues, 'descend');
            
            % 信号子空间和噪声子空间
            signal_subspace = V(:, idx(1));
            noise_subspace = V(:, idx(2:end));
            
            % MUSIC谱
            theta_range = -90:0.5:90;
            music_spectrum = zeros(size(theta_range));
            
            for i = 1:length(theta_range)
                a = obj.beamformer.steering_vector(theta_range(i));
                music_spectrum(i) = 1 / (a' * (noise_subspace * noise_subspace') * a);
            end
            
            % 找到干扰峰值(排除期望信号方向)
            signal_region = abs(theta_range - obj.environment_params.theta_s) > 10;
            [~, max_idx] = max(abs(music_spectrum .* signal_region));
            theta_i_est = theta_range(max_idx);
        end
    end
end

性能评估与比较

多种算法实现

classdef BeamformingComparisons
    methods (Static)
        function result = traditional_capon(X, theta_s, N, d, lambda)
            % 传统Capon波束形成器
            beamformer = LaplaceNullWidening(N, d, lambda, theta_s);
            R = beamformer.compute_sample_covariance(X);
            w = beamformer.capon_beamformer(R, theta_s);
            
            result.weights = w;
            result.beamformer = beamformer;
        end
        
        function result = diagonal_loading(X, theta_s, N, d, lambda, loading_factor)
            % 对角加载波束形成器
            beamformer = LaplaceNullWidening(N, d, lambda, theta_s);
            R = beamformer.compute_sample_covariance(X);
            
            % 对角加载
            R_loaded = R + loading_factor * eye(N);
            w = beamformer.capon_beamformer(R_loaded, theta_s);
            
            result.weights = w;
            result.beamformer = beamformer;
        end
        
        function result = worst_case_optimization(X, theta_s, N, d, lambda, uncertainty)
            % 最坏情况性能优化
            
            beamformer = LaplaceNullWidening(N, d, lambda, theta_s);
            
            % 构建不确定性集合
            theta_range = theta_s - uncertainty:1:theta_s + uncertainty;
            constraints = [];
            
            for theta = theta_range
                a = beamformer.steering_vector(theta);
                constraints = [constraints, a];
            end
            
            % 优化问题求解
            w = obj.solve_worst_case_optimization(X, constraints, theta_s);
            
            result.weights = w;
            result.beamformer = beamformer;
        end
        
        function [beam_pattern, theta] = compute_beam_pattern(beamformer, w, theta_range)
            % 计算波束方向图
            beam_pattern = zeros(size(theta_range));
            
            for i = 1:length(theta_range)
                a = beamformer.steering_vector(theta_range(i));
                beam_pattern(i) = abs(w' * a)^2;
            end
            
            beam_pattern = 10*log10(beam_pattern / max(beam_pattern));
            theta = theta_range;
        end
        
        function plot_comparison(results, scenario)
            % 绘制算法比较图
            
            theta_range = -90:0.5:90;
            figure('Position', [100, 100, 1200, 800]);
            
            % 计算各算法的波束方向图
            algorithms = fieldnames(results);
            colors = lines(length(algorithms));
            
            for i = 1:length(algorithms)
                algo = algorithms{i};
                beamformer = results.(algo).beamformer;
                w = results.(algo).weights;
                
                [pattern, theta] = BeamformingComparisons.compute_beam_pattern(...
                    beamformer, w, theta_range);
                
                plot(theta, pattern, 'LineWidth', 2, ...
                    'Color', colors(i,:), 'DisplayName', algo);
                hold on;
            end
            
            % 标记关键方向
            xline(scenario.theta_s, '--r', 'LineWidth', 2, ...
                  'DisplayName', '期望信号方向');
            xline(scenario.theta_i, '--g', 'LineWidth', 2, ...
                  'DisplayName', '干扰方向');
            
            % 标记干扰变化范围
            if isfield(scenario, 'interference_variation')
                variation = scenario.interference_variation;
                xline(scenario.theta_i - variation, ':g', 'LineWidth', 1);
                xline(scenario.theta_i + variation, ':g', 'LineWidth', 1);
                patch([scenario.theta_i-variation, scenario.theta_i+variation, ...
                       scenario.theta_i+variation, scenario.theta_i-variation], ...
                      [-50, -50, 0, 0], 'g', 'FaceAlpha', 0.1, ...
                      'DisplayName', '干扰变化范围');
            end
            
            xlabel('角度 (度)');
            ylabel('归一化功率 (dB)');
            title('波束形成算法比较');
            legend;
            grid on;
            ylim([-50, 5]);
        end
    end
end

可视化与结果分析

综合性能评估系统

classdef PerformanceEvaluation
    properties
        metrics
        scenarios
        results
    end
    
    methods
        function obj = PerformanceEvaluation()
            obj.metrics = {
                'SINR_loss', ...      % 信干噪比损失
                'null_depth', ...     % 零陷深度
                'null_width', ...     % 零陷宽度
                'mainlobe_gain', ...  % 主瓣增益
                'robustness_index' ... % 鲁棒性指标
            };
        end
        
        function obj = run_evaluation(obj, algorithms, scenarios)
            % 运行性能评估
            
            fprintf('开始性能评估...\n');
            obj.scenarios = scenarios;
            obj.results = struct();
            
            for s = 1:length(scenarios)
                scenario = scenarios(s);
                fprintf('场景 %d: 干扰变化范围 = %.1f°\n', ...
                        s, scenario.interference_variation);
                
                for a = 1:length(algorithms)
                    algo_name = algorithms{a}.name;
                    [performance, details] = obj.evaluate_algorithm(...
                        algorithms{a}, scenario);
                    
                    obj.results.(algo_name).scenario(s) = performance;
                    obj.results.(algo_name).details{s} = details;
                end
            end
            
            obj.plot_comprehensive_results(algorithms);
        end
        
        function [performance, details] = evaluate_algorithm(obj, algorithm, scenario)
            % 评估单个算法性能
            
            % 生成测试数据
            [X_test, ground_truth] = obj.generate_test_data(scenario);
            
            % 应用算法
            result = algorithm.function(X_test, scenario);
            
            % 计算性能指标
            performance.SINR_loss = obj.compute_SINR_loss(result, ground_truth, scenario);
            [performance.null_depth, performance.null_width] = ...
                obj.compute_null_characteristics(result, scenario);
            performance.mainlobe_gain = obj.compute_mainlobe_gain(result, scenario);
            performance.robustness_index = obj.compute_robustness(result, scenario);
            
            details = struct('weights', result.weights, ...
                            'beamformer', result.beamformer);
        end
        
        function SINR_loss = compute_SINR_loss(obj, result, ground_truth, scenario)
            % 计算SINR损失
            
            w = result.weights;
            a_s = ground_truth.steering_vectors.a_s;
            a_i = ground_truth.steering_vectors.a_i;
            
            % 理论最优SINR
            SINR_optimal = 10^(scenario.SNR/10) * abs(a_s' * a_s)^2 / ...
                          (10^(scenario.SIR/10) * abs(a_s' * a_i)^2 + 1);
            
            % 实际SINR
            signal_power = abs(w' * a_s)^2 * 10^(scenario.SNR/10);
            interference_power = abs(w' * a_i)^2 * 10^(scenario.SIR/10);
            noise_power = w' * w;
            
            SINR_actual = signal_power / (interference_power + noise_power);
            
            SINR_loss = 10*log10(SINR_optimal / SINR_actual);
        end
        
        function [depth, width] = compute_null_characteristics(obj, result, scenario)
            % 计算零陷特征
            
            beamformer = result.beamformer;
            w = result.weights;
            
            % 在干扰附近扫描
            theta_scan = scenario.theta_i - 10:0.1:scenario.theta_i + 10;
            response = zeros(size(theta_scan));
            
            for i = 1:length(theta_scan)
                a = beamformer.steering_vector(theta_scan(i));
                response(i) = abs(w' * a)^2;
            end
            
            response_db = 10*log10(response / max(response));
            
            % 零陷深度
            depth = min(response_db);
            
            % 零陷宽度(-3dB点)
            threshold = -3;
            below_threshold = response_db < threshold;
            width = sum(below_threshold) * 0.1; % 度数
        end
        
        function plot_comprehensive_results(obj, algorithms)
            % 绘制综合性能结果
            
            figure('Position', [100, 100, 1400, 1000]);
            
            algo_names = cellfun(@(x) x.name, algorithms, 'UniformOutput', false);
            scenarios = [obj.scenarios.interference_variation];
            
            % SINR损失比较
            subplot(2,3,1);
            obj.plot_metric_comparison('SINR_loss', algo_names, scenarios);
            title('SINR损失比较');
            ylabel('SINR损失 (dB)');
            
            % 零陷深度比较
            subplot(2,3,2);
            obj.plot_metric_comparison('null_depth', algo_names, scenarios);
            title('零陷深度比较');
            ylabel('零陷深度 (dB)');
            
            % 零陷宽度比较
            subplot(2,3,3);
            obj.plot_metric_comparison('null_width', algo_names, scenarios);
            title('零陷宽度比较');
            ylabel('零陷宽度 (度)');
            
            % 主瓣增益比较
            subplot(2,3,4);
            obj.plot_metric_comparison('mainlobe_gain', algo_names, scenarios);
            title('主瓣增益比较');
            ylabel('主瓣增益 (dB)');
            
            % 鲁棒性指标比较
            subplot(2,3,5);
            obj.plot_metric_comparison('robustness_index', algo_names, scenarios);
            title('鲁棒性指标比较');
            ylabel('鲁棒性指标');
            
            % 综合评分
            subplot(2,3,6);
            obj.plot_overall_score(algo_names, scenarios);
            title('算法综合评分');
            ylabel('综合评分');
        end
        
        function plot_metric_comparison(obj, metric, algo_names, scenarios)
            % 绘制单个指标比较
            
            colors = lines(length(algo_names));
            hold on;
            
            for i = 1:length(algo_names)
                algo = algo_names{i};
                values = [obj.results.(algo).scenario.(metric)];
                
                plot(scenarios, values, 'o-', 'LineWidth', 2, ...
                    'Color', colors(i,:), 'MarkerSize', 6, ...
                    'DisplayName', algo);
            end
            
            xlabel('干扰变化范围 (度)');
            grid on;
            legend;
        end
    end
end

实际应用示例

动态干扰场景模拟

classdef DynamicInterferenceSimulator
    properties
        time_parameters
        motion_models
        array_system
        results
    end
    
    methods
        function obj = DynamicInterferenceSimulator()
            obj.time_parameters = struct(...
                'duration', 100, ...   % 仿真时长
                'dt', 0.1, ...        % 时间步长
                'update_interval', 1.0 ... % 算法更新间隔
            );
            
            obj.motion_models = {
                struct('type', 'sinusoidal', 'amplitude', 5, 'period', 20), ...
                struct('type', 'linear', 'rate', 0.5), ...
                struct('type', 'random_walk', 'step_size', 0.2) ...
            };
            
            obj.array_system = AdaptiveNullWideningSystem();
        end
        
        function obj = run_dynamic_simulation(obj, algorithm, motion_model_index)
            % 运行动态干扰仿真
            
            fprintf('运行动态干扰仿真...\n');
            
            motion_model = obj.motion_models{motion_model_index};
            time_steps = 0:obj.time_parameters.dt:obj.time_parameters.duration;
            num_steps = length(time_steps);
            
            % 初始化记录
            obj.results.time = time_steps;
            obj.results.interference_angle = zeros(1, num_steps);
            obj.results.weights = cell(1, num_steps);
            obj.results.SINR = zeros(1, num_steps);
            obj.results.null_depth = zeros(1, num_steps);
            
            % 初始干扰方向
            theta_i0 = 60;
            
            for t = 1:num_steps
                % 更新干扰方向
                current_angle = obj.update_interference_angle(...
                    theta_i0, time_steps(t), motion_model);
                obj.results.interference_angle(t) = current_angle;
                
                % 每间隔时间更新算法
                if mod(time_steps(t), obj.time_parameters.update_interval) < obj.time_parameters.dt
                    scenario = obj.create_scenario(current_angle);
                    [w, performance] = obj.array_system.process_interference_scenario(scenario);
                    obj.results.weights{t} = w;
                    obj.results.SINR(t) = performance.laplace.SINR_loss;
                    obj.results.null_depth(t) = performance.laplace.null_depth;
                else
                    % 保持上次权重
                    if t > 1
                        obj.results.weights{t} = obj.results.weights{t-1};
                        obj.results.SINR(t) = obj.results.SINR(t-1);
                        obj.results.null_depth(t) = obj.results.null_depth(t-1);
                    end
                end
            end
            
            obj.plot_dynamic_results(motion_model);
        end
        
        function angle = update_interference_angle(obj, theta_i0, time, motion_model)
            % 根据运动模型更新干扰方向
            
            switch motion_model.type
                case 'sinusoidal'
                    angle = theta_i0 + motion_model.amplitude * ...
                            sin(2*pi*time/motion_model.period);
                    
                case 'linear'
                    angle = theta_i0 + motion_model.rate * time;
                    
                case 'random_walk'
                    if time == 0
                        angle = theta_i0;
                    else
                        prev_angle = obj.update_interference_angle(...
                            theta_i0, time - obj.time_parameters.dt, motion_model);
                        angle = prev_angle + motion_model.step_size * randn();
                    end
                    
                otherwise
                    angle = theta_i0;
            end
        end
        
        function plot_dynamic_results(obj, motion_model)
            % 绘制动态仿真结果
            
            figure('Position', [100, 100, 1200, 800]);
            
            % 干扰方向变化
            subplot(2,2,1);
            plot(obj.results.time, obj.results.interference_angle, 'b-', 'LineWidth', 2);
            xlabel('时间 (s)');
            ylabel('干扰方向 (度)');
            title(['干扰方向变化 - ', motion_model.type]);
            grid on;
            
            % SINR性能
            subplot(2,2,2);
            plot(obj.results.time, obj.results.SINR, 'r-', 'LineWidth', 2);
            xlabel('时间 (s)');
            ylabel('SINR损失 (dB)');
            title('SINR性能');
            grid on;
            
            % 零陷深度
            subplot(2,2,3);
            plot(obj.results.time, obj.results.null_depth, 'g-', 'LineWidth', 2);
            xlabel('时间 (s)');
            ylabel('零陷深度 (dB)');
            title('零陷深度');
            grid on;
            
            % 波束方向图动画帧示例
            subplot(2,2,4);
            time_indices = round(linspace(1, length(obj.results.time), 5));
            theta_range = -90:0.5:90;
            colors = lines(length(time_indices));
            
            hold on;
            for i = 1:length(time_indices)
                idx = time_indices(i);
                w = obj.results.weights{idx};
                beamformer = obj.array_system.beamformer;
                
                pattern = zeros(size(theta_range));
                for j = 1:length(theta_range)
                    a = beamformer.steering_vector(theta_range(j));
                    pattern(j) = 10*log10(abs(w' * a)^2);
                end
                
                plot(theta_range, pattern - max(pattern), ...
                    'Color', colors(i,:), 'LineWidth', 1.5, ...
                    'DisplayName', sprintf('t=%.1fs', obj.results.time(idx)));
            end
            
            xlabel('角度 (度)');
            ylabel('归一化响应 (dB)');
            title('不同时刻波束方向图');
            legend;
            grid on;
            ylim([-50, 5]);
        end
    end
end

参数调优与实践建议

Laplace参数优化

classdef ParameterOptimizer
    methods (Static)
        function optimal_sigma = optimize_laplace_parameter(scenarios)
            % 优化Laplace尺度参数sigma
            
            sigma_range = 0.1:0.1:5;
            performance_scores = zeros(size(sigma_range));
            
            for i = 1:length(sigma_range)
                sigma = sigma_range(i);
                score = ParameterOptimizer.evaluate_sigma_performance(sigma, scenarios);
                performance_scores(i) = score;
            end
            
            [~, best_idx] = max(performance_scores);
            optimal_sigma = sigma_range(best_idx);
            
            % 绘制优化曲线
            figure;
            plot(sigma_range, performance_scores, 'b-o', 'LineWidth', 2);
            xlabel('Laplace尺度参数 \sigma');
            ylabel('综合性能得分');
            title('Laplace参数优化');
            grid on;
            
            fprintf('最优sigma参数: %.2f\n', optimal_sigma);
        end
        
        function score = evaluate_sigma_performance(sigma, scenarios)
            % 评估特定sigma参数的性能
            
            total_score = 0;
            
            for s = 1:length(scenarios)
                scenario = scenarios(s);
                
                % 生成测试数据
                [X, ground_truth] = ParameterOptimizer.generate_test_data(scenario);
                
                % 应用Laplace算法
                beamformer = LaplaceNullWidening(8, 0.5, 1, scenario.theta_s);
                w = beamformer.laplace_beamformer(X, scenario.theta_i, sigma);
                
                % 计算性能指标
                SINR_loss = ParameterOptimizer.compute_SINR_loss(w, ground_truth, scenario);
                [null_depth, null_width] = ParameterOptimizer.compute_null_characteristics(w, beamformer, scenario);
                
                % 综合评分(SINR损失小,零陷深且宽为好)
                scenario_score = -SINR_loss + null_depth/10 + null_width/5;
                total_score = total_score + scenario_score;
            end
            
            score = total_score / length(scenarios);
        end
    end
end

参考代码 干扰来向变化情况下的阵列天线Laplace零陷加宽算法 www.youwenfan.com/contentcnk/78404.html

实际部署建议

  1. 参数选择策略

    • 小sigma (0.5-2):干扰方向相对稳定时
    • 中sigma (2-4):中等干扰变化
    • 大sigma (4+):快速变化的干扰环境
  2. 计算复杂度考虑

    • 实时系统中使用预计算的Laplace权重表
    • 根据干扰变化率调整算法更新频率
  3. 混合策略

    • 结合对角加载提高数值稳定性
    • 与子空间跟踪算法结合处理多个干扰
posted @ 2025-10-29 10:08  我是一只小小鸟~  阅读(11)  评论(0)    收藏  举报