2013-10-15 3 views
1

Я пытаюсь написать матрицу в текстовый файл. Первым элементом моей матрицы является число (идентификатор объекта), которое имеет несколько цифр. Первая цифра может быть равна нулю (например, 023512, 146498 и т. Д.).Преобразование числа в строку в matlab

Для записи файла, у меня есть цикл:

objectID = [023512, 023534, 112512, 063512, 223512]; 
fSpec = ['%s', '\n']; 
fID = fopen('file', 'w'); 
for k=1:5 
    to_write = [num2str(objectID(k)) ',' 'l']; 
    fprintf(fID, fSpec, to_write); 
end 
fclose(fID) 

В этом примере я получаю файл

23512, л 23534, л 112512, л 63512, л 223512 , l

0 исчезли.

Я попытался использовать% d в fSpec ['% d' '% s' '% s' '\ n], но в этом случае я получаю предупреждение: значения вне диапазона или нецелые значения усечены во время преобразования в символ. Нуль все еще удаляется, и все записывается в одну строку.

Есть ли способ конвертировать число в строку без усечения нуля?

Спасибо

+2

Где 'objectID' приходят из? 'objectID = [023512, 023534, 112512, 063512, 223512];' не будут иметь ведущих нулей, потому что они цифры. вы можете сделать 'objectID = ['023512', '023534', '112512', '063512', '223512'];' или если это фиксированная цифра, то вы можете после этого заполнить нулями? – Dan

+0

Это фиксированная цифра, поэтому я буду заполнять нулями. Спасибо – bigTree

+1

@bigTree Я думаю, что вы должны использовать мое решение – Nick

ответ

7

Вы могли бы использовать:

objectID = 023512; 
oStr  = num2str(objectID , '%06d'); 
+2

'% 06d' для ведущих нулей '% 6d' для ведущих пробелов – Daniel

1

Что об использовании дополнения нулями из fprintf (предполагающие идентификаторы всегда 6 цифр номера)

objectID = [023512, 023534, 112512, 063512, 223512]; 
fSpec = '%06d,l\n'; % Note the %06d here! 
fID = fopen('file', 'w'); 
for k=1:5 
    to_write = objectID(k); 
    fprintf(fID, fSpec, to_write); 
end 
fclose(fID) 
Смежные вопросы