因为场景需要,很多时候我们得把3D图的框线描出来。
方案一

这个时候双击坐标轴,勾上"每个方向使用一条轴",这样好调些:

可以直接把对应位置的轴刻度去掉(显示轴线和刻度线,主刻度、次刻度样式选无),当方框线:


其实,长方体有8条边,通过双轴的方式,前、后、下、 上、左、右轴加起来也就6条边,另外2条边得通过特殊刻度线去加了:

方案二
直接用立方体框线:

优点:在对框线没有更多要求的情况下非常方便;缺点:各条线是一样的,不支持更细节的自定义调整。

进阶
按照右边的参数去配置图,就能达到左边这种效果。有种"深度学习感知"的高级感

也可以留一个平面,通过对比进行突出:

参考程序
python
%zhouzhichao
%25年7月2日
%生成单个信号的时频图便于分析
clear
clc
close all
list = [ 2, 6;
0.3, 4;
0.17 , 2;
0.125, 0;
0.07, -2;
0.05, -4;];
base = 'D:\实验室\论文\论文-多信号参数估计\JCR3\Principle\微调原理\diff_snr\snr_dataset';
index = [0.1,0.2,0.3,0.4];
start_n = 231;
labels_initial = zeros(4, 5); % 初始化标签,4行5列
%SFM,BPSK,LFM,FRANK分别对应0,1,2,3
%SFM
labels_initial(1,1)=0;labels_initial(1,2)=0.518;labels_initial(1,4) = 0.775;
%BPSK
labels_initial(2,1)=1;labels_initial(2,2)=0.518;labels_initial(2,4) = 0.775;
%LFM
labels_initial(3,1)=2;labels_initial(3,2)=0.518;labels_initial(3,4) = 0.775;
%FRANK
labels_initial(4,1)=3;labels_initial(4,2)=0.518;labels_initial(4,4) = 0.775;
num = 1;
%信号生成:
index_rd = index(randperm(length(index)));%给每类信号随机分配频点
[s1,h1] = mysigduo(0.25,'SFM');
[s2,h2] = mysigduo(index_rd(2),'BPSK');
[s3,h3] = mysigduo(index_rd(3),'LFM');
[s4,h4] = mysigduo(index_rd(4),'FRANK');
% S_raw = 3.1*s1 + 2.5*s2 + s3 + 2.5*s4;
S_raw = 3.1*s1;
labels = labels_initial; % 初始化标签,4行5列
%SFM,BPSK,LFM,FRANK分别对应0,1,2,3
%SFM
labels(1,3) = (index_rd(1)*2*535+49)/656;labels(1,5) = h1*2*535/656;
%BPSK
labels(2,3) = (index_rd(2)*2*535+49)/656;labels(2,5) = 0.034;
%LFM
labels(3,3) = (index_rd(3)*2*535+49)/656;labels(3,5) = h3*2*535/656;
%FRANK
labels(4,3) = (index_rd(4)*2*535+49)/656;labels(4,5) = 0.04;
snr_i=1;
%信号加噪:
snr = list(snr_i, 2);
disp(["n: ",num, " snr: ",snr])
S = list(snr_i, 1)*S_raw + ones(size(S_raw));
%生成时频图:
[tfr,t,f] = tfrctfd2(S);
%生成3D时频图:
% 获取幅度
tfr_asb = abs(tfr);
% 计算最大值,用于caxis
level = max(max(tfr_asb(:, 200:800)));
new_t = t / 1000; % 将t轴的值缩小1000倍
tfr_asb = tfr_asb/max(tfr_asb(:));
% 创建三维图形
figure;
surf(new_t, f, tfr_asb, 'EdgeColor', 'none'); % 使用surf来创建3D图
xlim([0,1])
ylim([0,0.5])
% 设置x轴的刻度
% 设置轴标签
xlabel('Normalized Time');
ylabel('Normalized Frequency');
zlabel('Normalized Amplitude');
% 调整视角
view(3); % 设置为3D视角
% 可选:暂停使图形实时更新
pause(0.05);
set(gca, 'FontName', 'Times New Roman');
save("D:\实验室\论文\论文-多信号参数估计\JCR3\Principle\Mechanisms\tfr_asb.mat",'tfr_asb')