convertContainedStringsToChars

Преобразуйте строковые массивы на любом уровне массива ячеек или структуры

Описание

Чтобы код принял массивы ячеек и структуры, которые содержат строки, в качестве входных параметров, добавьте вызов к convertContainedStringsToChars в начало вашего кода. Тогда вам не нужно вносить какие-либо другие изменения в код, который вы написали, чтобы работать с массивами ячеек или структурами, содержащими символьные массивы.

пример

B = convertContainedStringsToChars(A) преобразует строковые массивы на любом уровне в A.

  • Если A являются строковые массивы, тогда B - вектор символов или массив ячеек из векторов символов.

  • Если A - массив ячеек или структура, затем строковые массивы в любой камере или поле A стать векторами символов или массивами ячеек векторов символов в B. Все другие камеры или поля A не изменяются в B.

  • В противном случае функция возвращается A без изменений.

пример

[B1,...,Bn] = convertContainedStringsToChars(A1,...,An) преобразует входные параметры A1,...,An. Для каждого входного параметра должен быть соответствующий выходной аргумент в B1,...,Bn.

Примеры

свернуть все

Создайте массив ячеек, содержащий даты запуска, имена космических аппаратов и посещенные планеты. Одни камеры содержат строковые массивы, другие - нет.

C = {2004,"Messenger","Mercury"; ...
     1977,"Voyager 1",["Jupiter","Saturn"]; ...
     2006,"New Horizons","Pluto"}
C=3×3 cell array
    {[2004]}    {["Messenger"   ]}    {["Mercury"]}
    {[1977]}    {["Voyager 1"   ]}    {1x2 string }
    {[2006]}    {["New Horizons"]}    {["Pluto"  ]}

Преобразуйте строки в C в векторы символов.

C = convertContainedStringsToChars(C)
C=3×3 cell array
    {[2004]}    {'Messenger'   }    {'Mercury'}
    {[1977]}    {'Voyager 1'   }    {1x2 cell }
    {[2006]}    {'New Horizons'}    {'Pluto'  }

Обратите внимание, что функция преобразует строковые массивы ["Jupiter","Saturn"] в массив ячеек из векторов символов, содержащийся в камере C(2,3). Для доступа к содержимому камеры используйте фигурную индексацию скобок.

C{2,3}
ans = 1x2 cell
    {'Jupiter'}    {'Saturn'}

Создайте структуру, содержащую массивы данных, заголовок и метки для графика. Некоторые поля содержат строки, а другие - нет.

S.x = linspace(0,2*pi);
S.y = sin(S.x);
S.title = "y = sin(x)";
S.axislabels = ["x (radians)","y"]
S = struct with fields:
             x: [1x100 double]
             y: [1x100 double]
         title: "y = sin(x)"
    axislabels: ["x (radians)"    "y"]

Преобразуйте строки в S.

S = convertContainedStringsToChars(S)
S = struct with fields:
             x: [1x100 double]
             y: [1x100 double]
         title: 'y = sin(x)'
    axislabels: {'x (radians)'  'y'}

Обработайте произвольное количество входных массивов разных типов.

Создайте массив типа double, структуру и массив ячеек. Структура и массив ячеек содержат строки, заданные с помощью двойных кавычек.

x = linspace(0,2*pi,8);
S.y = sin(x);
S.title = "y = sin(x)";
C = {{sin(x),"y = sin(x)"},{cos(x),"y = cos(x)"}};

Преобразуйте строки и верните все другие данные без изменений.

[x,S,C] = convertContainedStringsToChars(x,S,C)
x = 1×8

         0    0.8976    1.7952    2.6928    3.5904    4.4880    5.3856    6.2832

S = struct with fields:
        y: [0 0.7818 0.9749 0.4339 -0.4339 -0.9749 -0.7818 -2.4493e-16]
    title: 'y = sin(x)'

C=1×2 cell array
    {1x2 cell}    {1x2 cell}

Отобразите содержимое массива ячеек, содержащегося в первой камере, C(1). Функция преобразует строки, которые находятся во вложенных камерах или вложенных структурах, в векторы символов. Обратите внимание, что векторы символов отображаются с одинарными кавычками.

C{1}
ans=1×2 cell array
    {1x8 double}    {'y = sin(x)'}

Входные параметры

свернуть все

Входной массив, заданный как массив любого размера или типа данных.

Если A - массив ячеек или структура, тогда он может быть вложен. Камера может содержать другой массив ячеек, а структура может иметь поле, которое является другой структурой. convertContainedStringsToChars преобразует каждый элемент или значение поля, которое является строкой, в соответствующий вектор символов или массив ячеек из векторов символов. Функция преобразует каждый элемент или значение поля с помощью правил, определенных convertStringsToChars функция, прохождение по каждому уровню и комбинация вложенных контейнеров.

Введенный в R2018b