Разделить массив ячеек - PullRequest
0 голосов
/ 04 октября 2018

У меня есть массив ячеек 150X1.В массиве есть несколько типов данных.Первая ячейка содержит 0.9VA = 1.012207;второй: 0.9VA_CLK = 0.020752;и так далее (по большей части).Я хотел бы разделить ячейку на две ячейки, используя = в качестве разделителя.Таким образом, {1,1}: 0.9VA и {1,2}: 1.012207;{2,1}: 0.9VA_CLK и {2,2}: 0.020752;так далее и так далее.Я попытался преобразовать их в строки, а затем с помощью strsplit;Однако я сталкиваюсь с проблемами, потому что строковые массивы имеют переменный размер.

Если есть какая-либо другая информация, которую я могу предоставить, пожалуйста, дайте мне знать.Спасибо за вашу помощь и время заранее.

enter image description here

1 Ответ

0 голосов
/ 05 октября 2018

Вы действительно можете применить strsplit к каждой из строк (массивов символов) в массиве ячеек.Для этого вы можете использовать cellfun:

c{1} = '0.9VA = 1.012207';
c{2} = '0.9VA_CLK = 0.020752';
c{3} = 'CSIPhgenSWoffList = [0, 0, 0, 0]';
c{4} = 'SomethingElse = [0.020752, 0.24564]';
c = cellfun(@(x)strsplit(x,'='),c,'UniformOutput',false);
c = cat(1,c{:});

Я использую небольшой примерный массив ячеек c, содержащий четыре строки, надеюсь, это представительно.Я применяю strplit к каждой ячейке в c, используя cellfun(x,'='), которая разделяется на знак равенства и возвращает массив ячеек с массивами ячеек.То есть каждая строка в c превращается в массив ячеек с 2 строками (например, '0.9VA ' и ' 1.012207'. Это оставляет некоторые пробелы в начале и конце строк.

Следующаястрока, cat, преобразует этот массив ячеек массивов ячеек в двумерный массив ячеек. Окончательный результат - это массив ячеек c, содержащий то же количество строк, что и исходный массив ячеек, и 2 столбца. Первыйстолбец соответствует части перед знаком равенства, второй столбец - части после знака равенства.

Чтобы удалить пробелы, можно снова использовать cellfun с strtrim:

c = cellfun(@strtrim,c,'UniformOutput',false);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...