我正在尝试计算压缩率,但是该图给我一个空白的窗口,它早先工作正常,但现在我不知道这里的问题是我的代码
function goodCompressionLevel = findGoodCompressionLevel(targetRatio, filename)
width = 672;
height = 380;
for compressionLevel = 1:255
[~,~,ext] = fileparts(filename);
if strcmp(ext, '.db') ~= 1
originalFileSize = 8*width*height;
[~,name,~] = fileparts(filename);
output = strcat(name, '_temp.jxr');
system(['/usr/local/Cellar/jxrlib/1.1/bin/JxrEncApp -i ' filename ' -o ' output ' -q ' num2str(compressionLevel)]);
fileInfo = dir(output);
newFileSize = fileInfo.bytes;
ratios(compressionLevel+1) = originalFileSize/newFileSize;
fprintf('Current Ratio: %d\n', ratios(compressionLevel+1));
%delete(output);
end
end
plot(ratios);
minDist = Inf;
for r = 1:length(ratios)
display(abs((ratios(r) - targetRatio)));
display(minDist);
if abs((ratios(r) - targetRatio)) <= minDist
minDist = abs((ratios(r) - targetRatio));
else
goodCompressionLevel = r-1;
display(goodCompressionLevel);
break;
end
end
end
你能帮我解决一下吗?
答案 0 :(得分:0)
检查&#39;比率&#39;包含&#39; NaN&#39;值。您的原始文件大小是一个非常大的数字,我不确定fileInfo.bytes返回什么。 如果你想更方便地想象情节,试试
plot(ratios,'.')
这将点上图中所有现有的点。