2017-10-01 21 views
0

データセットを切り上げて小数点以下3桁まで出力できるコードを記述したいと思います。私はCeil関数を使用する必要があることを知っていますが、正しいコードを書く方法はわかりません。私のコードが印刷するのは1と2だけです!例えば、1.2345ラウンドから2.000ラウンドまでです。私は、ceil関数を使って1.235になるように数値を丸めたいと思います。MATLABのRoundUP関数

私のコードは次のとおりです。

row = 1; 
col = 1; 
HIGH_ERROR = 2.5; 
LOW_ERROR = 0.0; 
% Read the file 
rawData = dlmread('data_1.csv',','); 
% Get the size 
[MAX_ROWS, MAX_COLS] = size(rawData); 
errorMap = double(zeros(MAX_ROWS, MAX_COLS)); 
value = ceil(rawData(row, col)*1000/1000); 
%Print the raw data 
fprintf('Raw Data\n'); 
for row = 1 : MAX_ROWS 
for col = 1 : MAX_COLS 
    fprintf('%0.3f ', rawData(row, col)); 
end 
fprintf('\n'); 
end 
%Print the Error Map 
fprintf('Error Map\n'); 
for row = 1 : MAX_ROWS 
for col = 1 : MAX_COLS 
    if rawData(row, col) > HIGH_ERROR 
     errorMap(row, col) = rawData(row, col); 
     rawData(row, col) = HIGH_ERROR; 
     if rawData(row, col) < LOW_ERROR 
     errorMap(row, col) = rawData(row, col); 
     rawData(row, col) = LOW_ERROR; 
     end 
    end 
fprintf('%0.3f ', errorMap(row, col)); 
end 
fprintf('\n'); 
end 
%Print the Rounded Data 
fprintf('Rounded Data\n'); 
for row = 1 : MAX_ROWS 
for col = 1 : MAX_COLS 
    value = ceil(rawData(row, col)*1000/1000); 
    fprintf('%0.3f ', value); 
end 
fprintf('\n'); 
end 

答えて

1

私はあなたがround()を持っている任意の言語で動作するはずです素敵なトリックは次のようになり

value = ceil(rawData(row, col)*1000)/1000; 
0

をしたいと思う:

ラウンドアップ(CEIL) - >ceil(x) = round(x + 0.5)

ラウンドダウン(フロア) - >floor(x) = round(x - 0.5)です。