Rubber Band 算法作用过程(视频帧)

核心程序: 

%zhouzhichao
%25年6月3日
%编写Rubber band程序并测试clear
clc
close all%%
%生成信号
list = [  2,   6;0.3,   4;0.17 , 2;0.125, 0;0.07, -2;0.05, -4;];%信号生成:[s1,h1] = mysigduo(0.25,'BPSK');
% [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;snr_i=1;%信号加噪:
snr = list(snr_i, 2);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;% origin_y1 = 0.225;
% origin_y2 = 0.275;
%
% y1 = origin_y1 + 0;
% a = round(y1/0.5*1024);
% tfr_asb(a-1:a+1,:)=1;for k=0:0.001:0.02hold offsurf(new_t, f, tfr_asb, 'EdgeColor', 'none'); % 使用surf来创建3D图colormap('gray');xlim([0,1])ylim([0.2,0.3])% 设置x轴的刻度% 设置轴标签% xlabel('Normalized Time');% ylabel('Normalized Frequency');% zlabel('Normalized Amplitude');% 调整视角view(-42.6, 84);% 可选:暂停使图形实时更新pause(0.05);set(gca, 'FontName', 'Times New Roman');ax = gca;  % 获取当前坐标轴ax.XColor = 'none';  % 隐藏 x 轴ax.ZColor = 'none';  % 隐藏 z 轴% grid off;ax = gca;  % 获取当前坐标轴ax.YAxis.FontSize = 14;  % 设置 y 轴刻度标签的字体大小为 14% surf(X, Y, Z, 'FaceColor', 'interp', 'EdgeColor', 'none');  % 设置颜色插值和去除边框% box off;%%%Rubber band算法%差了0.05%0.05-0.03=0.02L0 = 0.01;origin_y1 = 0.225;origin_y2 = 0.275;%     k = 0.015;y2 = origin_y2 - k;y1 = origin_y1 + k;delta_y = y2 - y1;delta_L = 2*(delta_y-L0);F = delta_L/L0;%F同样是相对拉伸长度,因为没加系数a = round(y1/0.5*1024);% tfr_asb(a-1:a+1,:)=1;height = max(tfr_asb(a,:));resistance = max(tfr_asb(a,:));hold on;  % 保持当前图形%rectangle('Position', [x, y, width, height])% rectangle('Position', [0, 0.225, 1, 0.05], 'EdgeColor', 'r', 'LineWidth', 2);z_height = height;  % 可以更改这个值来调整框在z轴的高度% 绘制三维矩形框,使用patch函数x = [0 1 1 0];  % x坐标y = [y1 y1 y2 y2];  % y坐标(根据需要设置)z = [z_height z_height z_height z_height];  % z轴的高度,所有顶点高度相同% 使用patch来创建矩形RGB = [1 F/8*1 F/8*1];patch(x, y, z, 'white', 'FaceAlpha', 0.5, 'EdgeColor', [1 0 0], 'LineWidth', 2);  % 'r'为颜色,'FaceAlpha'设置透明度%     saveas(gcf,['D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\Rubber band performance\img of diff delta y\relative delta L ',num2str(F),'.jpg'])print(gcf, ['D:\实验室\论文\论文-多信号参数估计\JCR3\Experiment\Rubber band performance\img of diff delta y\relative delta L ', num2str(round(F,3)), '.jpg'], '-djpeg', '-r300');end

运行效果: