2012-04-19 4 views
0

У меня есть двойной массив в matlab, элементы которого выводятся в файл в шестнадцатеричном формате. Я хочу вывести его без десятичных знаков, и я не могу понять, как это сделать, когда выводимое значение является отрицательным числом. Я пробовал:Hexidecimal Matlab вывести в неправильном формате

>> A = ones(1,4); 
    >> fid = fopen('test.txt', 'r'); 
    >> value = A(2); 
    >> fid = fopen('test.txt', 'w'); 
    >> fprintf(fid,'%x\r\n', value); 
    >> fprintf(fid,'%.0x\r\n', value); 
    >> value = -value; 
    >> fprintf(fid,'%.0x\r\n', value); 
    >> fprintf(fid,'%0.0x\r\n', value); 
    >> fprintf(fid,'%0.0x\r\n', value); 
    >> fprintf(fid,'%1.0x\r\n', value); 
    >> fprintf(fid,'%x\r\n', value); 

И выходной файл выглядит следующим образом:

1 
    1 
    -1e+000 
    -1e+000 
    -1e+000 
    -1e+000 
    -1.000000e+000 

Я действительно просто хочу, чтобы иметь возможность распечатать «-1»;

Извините, если это очевидно, но его очень сложно найти эту информацию, так как существует так много разных форматов.

+0

Я попытался ответить, но не понял вопрос. Теперь зачем вам выводить значения «double» в шестнадцатеричном формате? –

+0

Ну, они на самом деле целые значения. Я хочу, чтобы они были целыми числами, но я уверен, что это массив удвоений. Округление будет хорошо, если это сработает, но это не так. – Dylan

+0

Посмотрите на [Two's Complement for MATLAB] (http://www.mathworks.com/matlabcentral/fileexchange/5485-twos-complement-for-matlab) в MATLAB File Exchange. – zellus

ответ

1

Вы пытались сменить value = -value; на номер value = round(-value);?

Альтернативно, выходные абсолютные значения только, но PREPEND «-», если значение отрицательное:

if value < 0, 
    fprintf('-%x', abs(value)); 
else 
    fprintf('%x', abs(value)); 
end 
+0

Второй способ работает, но он определенно не идеален. – Dylan

+0

Если вам нужно только вывести одно значение за раз, поместите код выше в функцию-оболочку hexprintf (val). Я не думаю, что вы, скорее всего, найдете лучшее решение. –

Смежные вопросы