Числовые и буквенные символы в одной и той же матрице - PullRequest
1 голос
/ 06 мая 2011

Я работаю над моделью, чтобы использовать matlab в качестве графического представления для другой модели. Поэтому я хотел бы иметь матрицу, которая может быть обновлена ​​как буквами, так и цифрами. Числа обозначают скорость, в то время как, например, «-» может обозначать пустой раздел. В документации по Matlab и в Интернете я нашел много интересных советов, но не то, что мне нужно. Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 06 мая 2011

Вы не можете представлять данные типа numeric (целые числа / числа с плавающей запятой) и данные типа char в матрице. Однако вы можете использовать cells, которые похожи на матрицы и могут содержать разные типы данных в каждой ячейке. Вот пример.

A={[1 2 3],'hello';'world',[4,5,6]'}

A = 

    [1x3 double]    'hello'     
    'world'         [3x1 double]

Здесь первая ячейка содержит вектор строки, вторая и третья ячейка содержат строки, а четвертая ячейка содержит вектор столбца. Индексирование в ячейке аналогично индексированию массивов, с одним небольшим отличием: используйте {} для группировки индексов. например, чтобы получить доступ к элементу во втором ряду, первом столбце, выполните

A{2,1}

ans =

world

Вы также можете получить доступ к элементу массива внутри ячейки, например

A{2,2}(2)

ans = 

    5
0 голосов
/ 06 мая 2011

Если вы хотите хранить смеси числовых и символьных данных, yoda имеет правильное предложение : используйте массивы ячеек .

Однако на основеВ примере, который вы описали, у вас может быть другой вариант.Если записи символов в вашей матрице присутствуют с целью определения «отсутствующих данных», возможно, имеет смысл использовать чисто числовую матрицу, содержащую уникальные значения, такие как NaN или Inf для идентификации точек данных, которые пусты или где данные недоступны.

При выполнении операций с вашей матрицей вам придется индексировать только конечные элементы (например, ).ISFINITE ) и выполняйте свои расчеты на них.Есть даже некоторые функции в панели инструментов статистики , которые будут выполнять операции, игнорируя значения NaN.Это может быть более чистым способом, поскольку вы можете сохранить свою матрицу в виде числового типа ('single' или 'double' точность ) вместо того, чтобы связываться с массивами ячеек.

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