Какая команда выполняет инверсию str2double в Matlab? - PullRequest
0 голосов
/ 31 мая 2018

Matlab имеет команду num2str:

>> num2str([1 2 30])   
ans =   
    '1   2  30'

и команду str2double:

>> str2double({'1','2','30'}) 
ans =
      1     2    30

Есть ли команда для создания массива ячеек из массивов символов (известный как Strings beforeMatlab 2017a)?

>> desired([1 2 30]) 
ans =
  1×3 cell array
    '1'    '2'    '30'

Если нет команды, короткое и понятное решение, в котором не используются циклы?

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Если вы можете использовать массив String:

>> string([1 2 30])

ans = 

  1×3 string array

    "1"    "2"    "30"

Или:

>> cellstr(string([1 2 30]))

ans =

  1×3 cell array

    {'1'}    {'2'}    {'30'}

Если нет, всегда есть (недокументированное) sprintfc:

>> sprintfc('%d', [1 2 30])

ans =

  1×3 cell array

    {'1'}    {'2'}    {'30'}
0 голосов
/ 31 мая 2018

Преобразовать массив в массив чисел ячеек, а затем применить num2str к ячейке:

cellfun(@num2str,num2cell([1 2 30]),'UniformOutput',false)

Может быть более чистое решение, чем 'UniformOutput', являющееся false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...