контекст
В R2016b MATLAB ввел новый тип данных строки в дополнение к обычному типу данных char. Пока что так хорошо, но теперь у меня много проблем с используемым ящиком JSONlab.
Например, в R2015b loadjson
возвращает массив символов ячейки 1x3:
dd = loadjson('["Titi", "Toto", "Tata"]')
dd =
'Titi' 'Toto' 'Tata'
Но в R2018a loadjson
возвращает массив строк 1x3:
dd = loadjson('["Titi", "Toto", "Tata"]')
dd =
1×3 cell array
{["Titi"]} {["Toto"]} {["Tata"]}
проблема
Чтобы не менять код везде, я хотел бы исправить процедуру loadjson
чтобы заменить все типы string
которые он может вернуть с помощью типов char
. Например, в следующем массиве ячеек:
test = { 'hello', "world", 0.3; 'how', 'are', "you"}
test =
2×3 cell array
{'hello'} {["world"]} {[0.3000]}
{'how' } {'are' } {["you" ]}
Я бы хотел заменить все строки:
cellfun(@isstring, test)
ans =
2×3 logical array
0 1 0
0 0 1
Есть ли способ, которым я могу сделать это быстро (т.е. Без перебора всех элементов)?
PS: Я знаю jsondecode и jsonencode для замены JSONLab в будущем, но пока я просто хочу быстро исправить ситуацию.