У меня есть много больших массивов ячеек (около 10000x100 ячеек каждый), которые содержат массивы символов, иногда это числа как строки, а иногда они «..» или «x» или что-то подобное. Я хочу преобразовать эти массивы ячеек в числовые матрицы (двойные массивы), так что все «числовые строки» - это числа (удваивается) и все остальные нулевые записи.Как скрывать большие массивы смешанных ячеек со строками для быстрой сглаживания матрицы в Matlab?
Пример: у меня есть:
C = {'-34635', '22', 'x', '..', '5'; '..' , 'x', '-343','1','..'};
Я хочу:
C_new = [-34635, 22, 0, 0, 5; 0, 0, -343, 1, 0];
я могу сделать это с str2num
или str2double
, но это ужасно медленно. Я читал примеры об использовании sprintf
и sscanf
, но я не могу заставить его работать.
Любые советы/предложения о том, как достичь этого быстро очень ценятся. Спасибо :)
Спасибо, я пробовал это раньше, и это работает, это правда, но это ужасно медленно. Я ищу более быстрый способ. –
О 'sscanf' вы видите эту ссылку https://fr.mathworks.com/matlabcentral/answers/18509-cell-conversion-to-double –
У меня появилась идея использовать sprintf и sscanf именно из первой ссылки, которую вы опубликовали. Но я не могу заставить его работать над моими данными только по той причине, о которой вы говорили, а именно о том, что мои данные НЕ состоят только из чисел. Точно мой вопрос. Как решить его для ячейки с не только номерами. Спасибо за помощь. –