UOMOP

TopK 본문

카테고리 없음

TopK

Happy PinGu 2024. 10. 21. 18:51
% alpha와 beta의 값들
alpha_values = [0.1, 0.4, 0.7, 1.0, 1.3, 1.6];
beta_values = [0.1, 0.4, 0.7, 1.0, 1.3, 1.6];

% 데이터: alpha, beta, dim, snr, Average PSNR, FLOPs
data = [
    0.1, 0.1, 512, 30, 30.17, 42615.213;
    0.1, 0.4, 512, 30, 30.13, 41735.868;
    0.1, 0.7, 512, 30, 30.04, 40109.326;
    0.1, 1.0, 512, 30, 29.89, 37927.21;
    0.1, 1.3, 512, 30, 29.69, 35437.803;
    0.1, 1.6, 512, 30, 29.46, 33132.378;
    0.4, 0.1, 512, 30, 30.17, 42603.999;
    0.4, 0.4, 512, 30, 30.13, 41731.091;
    0.4, 0.7, 512, 30, 30.04, 40104.549;
    0.4, 1.0, 512, 30, 29.89, 37922.433;
    0.4, 1.3, 512, 30, 29.69, 35433.026;
    0.4, 1.6, 512, 30, 29.46, 33127.601;
    0.7, 0.1, 512, 30, 30.17, 42578.222;
    0.7, 0.4, 512, 30, 30.13, 41707.636;
    0.7, 0.7, 512, 30, 30.04, 40080.937;
    0.7, 1.0, 512, 30, 29.89, 37898.821;
    0.7, 1.3, 512, 30, 29.69, 35409.414;
    0.7, 1.6, 512, 30, 29.46, 33103.989;
    1.0, 0.1, 512, 30, 30.17, 42481.457;
    1.0, 0.4, 512, 30, 30.13, 41632.963;
    1.0, 0.7, 512, 30, 30.04, 40016.323;
    1.0, 1.0, 512, 30, 29.89, 37861.523;
    1.0, 1.3, 512, 30, 29.69, 35372.116;
    1.0, 1.6, 512, 30, 29.46, 33066.691;
    1.3, 0.1, 512, 30, 30.15, 42250.39;
    1.3, 0.4, 512, 30, 30.12, 41422.12;
    1.3, 0.7, 512, 30, 30.03, 39841.016;
    1.3, 1.0, 512, 30, 29.89, 37718.152;
    1.3, 1.3, 512, 30, 29.69, 35324.846;
    1.3, 1.6, 512, 30, 29.47, 33019.421;
    1.6, 0.1, 512, 30, 30.13, 41844.57;
    1.6, 0.4, 512, 30, 30.09, 41053.902;
    1.6, 0.7, 512, 30, 30.01, 39517.221;
    1.6, 1.0, 512, 30, 29.87, 37439.116;
    1.6, 1.3, 512, 30, 29.68, 35085.908;
    1.6, 1.6, 512, 30, 29.47, 32932.142;
];

% alpha, beta, PSNR, FLOPs 추출
alpha = data(:,1);
beta = data(:,2);
psnr = data(:,5);
flops = data(:,6);

% PSNR을 최대화하고 FLOPs를 최소화하는 방식: 정규화
norm_psnr = (psnr - min(psnr)) / (max(psnr) - min(psnr));  % PSNR을 0에서 1로 정규화
norm_flops = (flops - min(flops)) / (max(flops) - min(flops));  % FLOPs도 0에서 1로 정규화

% PSNR은 높을수록 좋으므로 그대로 사용하고, FLOPs는 낮을수록 좋으므로 역으로 처리
combined_score = norm_psnr - norm_flops;

% 최적의 alpha와 beta 찾기
[max_score, idx] = max(combined_score);
best_alpha = alpha(idx);
best_beta = beta(idx);

fprintf('최적의 alpha: %.1f, 최적의 beta: %.1f\n', best_alpha, best_beta);
fprintf('PSNR: %.2f, FLOPs: %.2f\n', psnr(idx), flops(idx));
최적의 alpha: 1.6, 최적의 beta: 1.0 PSNR: 29.87, FLOPs: 37439.12
% alpha와 beta의 값들alpha_values = [0.1, 0.4, 0.7, 1.0, 1.3, 1.6];beta_values = [0.1, 0.4, 0.7, 1.0, 1.3, 1.6];% 데이터: alpha, beta, dim, snr, Average PSNR, FLOPsdata = [ 0.1, 0.1, 512, 30, 30.17, 42615.213; 0.1, 0.4, 512, 30, 30.13, 41735.868; 0.1, 0.7, 512, 30, 30.04, 40109.326; 0.1, 1.0, 512, 30, 29.89, 37927.21; 0.1, 1.3, 512, 30, 29.69, 35437.803; 0.1, 1.6, 512, 30, 29.46, 33132.378; 0.4, 0.1, 512, 30, 30.17, 42603.999; 0.4, 0.4, 512, 30, 30.13, 41731.091; 0.4, 0.7, 512, 30, 30.04, 40104.549; 0.4, 1.0, 512, 30, 29.89, 37922.433; 0.4, 1.3, 512, 30, 29.69, 35433.026; 0.4, 1.6, 512, 30, 29.46, 33127.601; 0.7, 0.1, 512, 30, 30.17, 42578.222; 0.7, 0.4, 512, 30, 30.13, 41707.636; 0.7, 0.7, 512, 30, 30.04, 40080.937; 0.7, 1.0, 512, 30, 29.89, 37898.821; 0.7, 1.3, 512, 30, 29.69, 35409.414; 0.7, 1.6, 512, 30, 29.46, 33103.989; 1.0, 0.1, 512, 30, 30.17, 42481.457; 1.0, 0.4, 512, 30, 30.13, 41632.963; 1.0, 0.7, 512, 30, 30.04, 40016.323; 1.0, 1.0, 512, 30, 29.89, 37861.523; 1.0, 1.3, 512, 30, 29.69, 35372.116; 1.0, 1.6, 512, 30, 29.46, 33066.691; 1.3, 0.1, 512, 30, 30.15, 42250.39; 1.3, 0.4, 512, 30, 30.12, 41422.12; 1.3, 0.7, 512, 30, 30.03, 39841.016; 1.3, 1.0, 512, 30, 29.89, 37718.152; 1.3, 1.3, 512, 30, 29.69, 35324.846; 1.3, 1.6, 512, 30, 29.47, 33019.421; 1.6, 0.1, 512, 30, 30.13, 41844.57; 1.6, 0.4, 512, 30, 30.09, 41053.902; 1.6, 0.7, 512, 30, 30.01, 39517.221; 1.6, 1.0, 512, 30, 29.87, 37439.116; 1.6, 1.3, 512, 30, 29.68, 35085.908; 1.6, 1.6, 512, 30, 29.47, 32932.142;];% alpha, beta, PSNR, FLOPs 추출alpha = data(:,1);beta = data(:,2);psnr = data(:,5);flops = data(:,6);% PSNR을 최대화하고 FLOPs를 최소화하는 방식: 정규화norm_psnr = (psnr - min(psnr)) / (max(psnr) - min(psnr)); % PSNR을 0에서 1로 정규화norm_flops = (flops - min(flops)) / (max(flops) - min(flops)); % FLOPs도 0에서 1로 정규화% PSNR은 높을수록 좋으므로 그대로 사용하고, FLOPs는 낮을수록 좋으므로 역으로 처리combined_score = norm_psnr - norm_flops;% 최적의 alpha와 beta 찾기[max_score, idx] = max(combined_score);best_alpha = alpha(idx);best_beta = beta(idx);fprintf('최적의 alpha: %.1f, 최적의 beta: %.1f\n', best_alpha, best_beta);fprintf('PSNR: %.2f, FLOPs: %.2f\n', psnr(idx), flops(idx));
Comments