Amor_DL 2023-04-11 16:44 采纳率: 71.4%
浏览 91
已结题

问题:怎样把随机信号替换成射频信号,然后进行仿真?

问题:怎样把随机信号替换成射频信号,然后进行仿真?
问题描述:
对局部放电源产生的超声波信号,可以采用雷达和医学中常用的射频信号来仿真,如下式:

img

选用接受超声波的中心频率取150KHz,等值波速为1500/ms。
程序中是用的随机信号

clear all
close all
clc
twpi=2*pi;
rad=pi/180;
deg=180/pi;
kelm=8;%X轴Y轴各自的阵列数量
snr=10;%信噪比
iwave=3;%目标数
theta=[10 30 50];
fe=[15 25 25];
n=100;%快拍数
dd=0.5;%均匀阵列阵元间隔
d=0:dd:(kelm-1)*dd;%X轴阵元分布
d1=dd:dd:(kelm-1)*dd;%Y轴阵元分布
Ax=exp(-j*twpi*d.'*(sin(theta*rad).*cos(fe*rad)));%X轴上阵元对应的方向矩阵
Ay=exp(-j*twpi*d1.'*(sin(theta*rad).*sin(fe*rad)));%Y轴上阵元对应的方向矩阵
A=[Ax;Ay];
S=randn(iwave,n);
X=A*S;%接收信号
X1=awgn(X,snr,'measured');%加入高斯白噪声
Rxx=X1*X1'/n;%自相关函数
[EV,D]=eig(Rxx);%求矩阵的特征向量和特征值
[EVA,I]=sort(diag(D).');%特征值按升序排列
EV=fliplr(EV(:,I));%左右翻转,特征值按降序排列
Un=EV(:,iwave+1:end);%噪声子空间

%按照方位角,仰角在0度~89度范围内(取步长为1)构造空间谱函数
for ang1=1:90
    for ang2=1:90
        thet(ang1)=ang1-1;
        phim1=thet(ang1)*rad;
        f(ang2)=ang2-1;
        phim2=f(ang2)*rad;
        a1=exp(-j*twpi*d.'*sin(phim1)*cos(phim2));
        a2=exp(-j*twpi*d1.'*sin(phim1)*sin(phim2));
        a=[a1;a2];
        SP(ang1,ang2)=1/(a'*Un*Un'*a);
    end
end
SP=abs(SP);
SPmax=max(max(SP));
SP=SP/SPmax;
figure(1)
h=mesh(thet,f,SP);%绘制空间谱函数图
set(h,'Linewidth',2)
xlabel('elevation(degree)')
ylabel('azimuth(degree)')
zlabel('magnitude(dB)')

figure(2)
h=mesh(thet,f,SP);%绘制空间谱函数图
set(h,'Linewidth',2)
xlabel('elevation(degree)')
ylabel('azimuth(degree)')
zlabel('magnitude(dB)')
view(0,90)
colorbar
colormap(jet)

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-04-11 18:39
    关注

    我在你的代码基础上做了一下修改,不知道是不是你需要的,运行结果如下:

    img

    img


    要把随机信号替换成射频信号,可以采用正弦波或者其他特定频率的波形。可以将随机信号 S 替换为正弦波信号,然后设置中心频率为150KHz,等值波速为1500m/s,采样率为fs=1MHz。
    代码如下:

    clear all
    close all
    clc
    twpi=2*pi;
    rad=pi/180;
    deg=180/pi;
    kelm=8;
    snr=10;
    iwave=3;
    theta=[10 30 50];
    fe=[15 25 25];
    n=100;
    dd=0.5;
    d=0:dd:(kelm-1)*dd;
    d1=dd:dd:(kelm-1)*dd;
    Ax=exp(-j*twpi*d.'*(sin(theta*rad).*cos(fe*rad)));
    Ay=exp(-j*twpi*d1.'*(sin(theta*rad).*sin(fe*rad)));
    A=[Ax;Ay];
    
    % 生成射频信号
    fs = 1e6; % 采样率1MHz
    fc = 150e3; % 中心频率150KHz
    c = 1500; % 等值波速1500m/s
    t = (0:n-1)/fs; % 时间序列
    f0 = 2*fc/c; % 信号频率
    x = sin(2*pi*f0*t); % 生成正弦波信号
    
    S = repmat(x, iwave, 1); % 替换随机信号
    
    X = A*S;
    X1 = awgn(X, snr, 'measured');
    Rxx = X1*X1'/n;
    [EV,D]=eig(Rxx);
    [EVA,I]=sort(diag(D).');
    EV=fliplr(EV(:,I));
    Un=EV(:,iwave+1:end);
    
    for ang1=1:90
        for ang2=1:90
            thet(ang1)=ang1-1;
            phim1=thet(ang1)*rad;
            f(ang2)=ang2-1;
            phim2=f(ang2)*rad;
            a1=exp(-j*twpi*d.'*sin(phim1)*cos(phim2));
            a2=exp(-j*twpi*d1.'*sin(phim1)*sin(phim2));
            a=[a1;a2];
            SP(ang1,ang2)=1/(a'*Un*Un'*a);
        end
    end
    SP=abs(SP);
    SPmax=max(max(SP));
    SP=SP/SPmax;
    figure(1)
    h=mesh(thet,f,SP);
    set(h,'Linewidth',2)
    xlabel('elevation(degree)')
    ylabel('azimuth(degree)')
    zlabel('magnitude(dB)')
    
    figure(2)
    h=mesh(thet,f,SP);
    set(h,'Linewidth',2)
    xlabel('elevation(degree)')
    ylabel('azimuth(degree)')
    zlabel('magnitude(dB)')
    view(0,90)
    colorbar
    colormap(jet)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 已采纳回答 4月13日
  • 创建了问题 4月11日