2015-12-10 11 views
-1

рассмотрит массив в MATLAB:как исправить и удалить ноль среди ряда для выравнивания цифр в массиве

a = [102 20 1 30 8 255];

В этом массиве, мне нужно, чтобы все числа до трех цифр, предваряя от нуля до всех значений:

a = 102 020 001 030 008 255 

После этого мне нужно снова отменить его. Как я могу это сделать? Я попытался отделить цифры и сделать это. Но это провалилось.

+0

обратными означают, что первоначальное значение массива должно быть восстановлено путем удаления нуля –

+0

сделать _резервное все цифры до трех цифр с помощью префикса zero_ не имеют смысла. '20' и' 020'_are_ одинаковое число. Это всего лишь проявление. Чтобы сгенерировать _strings_ с ведущими нулями, попробуйте что-то вроде 'a = [102 20 1 30 8 255]; sprintf ('% 03i \ n', a) ' –

ответ

2

Вы хотите использовать notation из fprintf, которые могут быть сохранены в виде строки с sprintf:

>> a = [102 20 1 30 8 255] 

a = 

    102 20  1 30  8 255 

>> b = sprintf('%.3d ',a) % b is a single string 

b = 

102 020 001 030 008 255 

>> a = str2num(b) 

a = 

    102 20  1 30  8 255 
+0

что @ luis-mendo сказал – Steve

0

Возможно, вам необходимо преобразовать в строку. Посмотрите на функции int2str или num2str, например. Тогда вы можете легко объединить нули в начале. Например:

s = int2str(10); 
['0' s] 

Это дает 010 как выход. Затем вы можете вернуться с помощью функции str2num.