2017-06-09 5 views
0

を私に返し、それは以前に正常に動作していますが、今、私はここでの問題は、私のコードプロットは、私は、圧縮比を計算しようとしていますが、プロットは空白の窓を私に返し、空白のウィンドウに

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 
ですかわかりません

修正してもらえますか?

+1

'ratio'の内容をプロットせずに調べます。それは空ですか?それはNaNでいっぱいですか? – Peter

答えて

0

'ratios'に 'NaN'値が含まれているかどうかを確認してください。元のファイルサイズは非常に大きいので、fileInfo.bytesが返すものは不明です。あなたはこれがある

plot(ratios,'.') 

を試みるより便利にプロットを視覚化したい場合は は、プロット上のすべての既存の点に点在します。

関連する問題