t = 0:0.0001:0.05; m = sin(10*pi*t) + sin(30*pi*t); % 希尔伯特变换 mh = imag(hilbert(m)); % 载波 fc = 2000; c = cos(2*pi*fc*t); % SSB调制 usb = m.*c - mh.*sin(2*pi*fc*t); lsb = m.*c + mh.*sin(2*pi*fc*t); % 时域波形 subplot(2,3,1); plot(t,m); title('基带信号'); xlabel('时间'); ylabel('幅度'); subplot(2,3,2); plot(t,usb); title('上边带调制信号'); xlabel('时间'); ylabel('幅度'); subplot(2,3,3); plot(t,lsb); title('下边带调制信号'); xlabel('时间'); ylabel('幅度'); % 幅度频谱图 fs = 1/(t(2)-t(1)); f = linspace(-fs/2,fs/2,length(t)); subplot(2,3,4); plot(f,abs(fftshift(fft(m)))); title('基带信号频谱'); xlabel('频率'); ylabel('幅度'); subplot(2,3,5); plot(f,abs(fftshift(fft(usb)))); title('上边带调制信号频谱'); xlabel('频率'); ylabel('幅度'); subplot(2,3,6); plot(f,abs(fftshift(fft(lsb)))); title('下边带调制信号频谱'); xlabel('频率'); ylabel('幅度');帮我优化一下这段代码
时间: 2023-08-14 19:04:19 浏览: 132
临界 t 值计算器:快速获取临界 t 值的工具-matlab开发
好的,这段代码可以优化的地方有:
1.可以将频谱计算部分提取出来,避免重复计算。
2.可以将 subplot 语句合并,使代码更简洁。
3.可以使用更具有可读性的变量名。
下面是优化后的代码:
```
t = 0:0.0001:0.05;
f_sampling = 1/(t(2)-t(1));
f = linspace(-f_sampling/2,f_sampling/2,length(t));
signal_baseband = sin(10*pi*t) + sin(30*pi*t);
signal_hilbert = imag(hilbert(signal_baseband));
carrier_frequency = 2000;
carrier = cos(2*pi*carrier_frequency*t);
signal_usb = signal_baseband.*carrier - signal_hilbert.*sin(2*pi*carrier_frequency*t);
signal_lsb = signal_baseband.*carrier + signal_hilbert.*sin(2*pi*carrier_frequency*t);
figure;
subplot(2,3,1);
plot(t,signal_baseband);
title('Baseband signal');
xlabel('Time');
ylabel('Amplitude');
subplot(2,3,2);
plot(t,signal_usb);
title('Upper sideband signal');
xlabel('Time');
ylabel('Amplitude');
subplot(2,3,3);
plot(t,signal_lsb);
title('Lower sideband signal');
xlabel('Time');
ylabel('Amplitude');
subplot(2,3,4);
plot(f,abs(fftshift(fft(signal_baseband))));
title('Baseband signal spectrum');
xlabel('Frequency');
ylabel('Amplitude');
subplot(2,3,5);
plot(f,abs(fftshift(fft(signal_usb))));
title('Upper sideband signal spectrum');
xlabel('Frequency');
ylabel('Amplitude');
subplot(2,3,6);
plot(f,abs(fftshift(fft(signal_lsb))));
title('Lower sideband signal spectrum');
xlabel('Frequency');
ylabel('Amplitude');
```
阅读全文