Хранение символов в массивах MATLAB - PullRequest
0 голосов
/ 09 марта 2011

Я хочу сохранить символ вместе с цифрами?Является ли использование Cells единственным способом?

Ответы [ 2 ]

0 голосов
/ 21 августа 2015

Это классический вопрос информатики 101.Массив традиционно содержит 1 тип данных.В matlab этот термин используется неправильно.

Вот несколько вещей, которые нужно знать:

  • Массив символов называется строкой
  • В массиве может храниться только одна информацияtype
  • Размер массива не может быть изменен

Но у Matlab есть абстракция поверх всего этого, поэтому инженер, который не изучал программирование в течение года, все еще может получитьработа сделанаХотя matlab позволяет вам изменять размер одномерной матрицы, он по-прежнему не позволяет использовать разные типы данных в одном массиве.Имейте в виду, что массивы Matlab 1D не являются строго массивами, потому что это факт.Аналогично с массивами массивов разного размера.Matlab не допускает использование различных структур данных по причинам оптимизации.Этот вопрос возникает из-за незнания доступных контейнеров.

  • Список: индексированные элементы контейнера (отлично подходит для быстрой сортировки и добавления элементов)
  • Set: для коллекции уникальных элементов(отлично подходит для обеспечения отсутствия дубликатов)
  • Карта: отлично подходит для быстрого извлечения элементов, основанных на уникальном идентификаторе, в Java есть реализации для них, и вы можете использовать их в matlab, если хотите, что обычносделано, если вам нужна коллекция, отличная от матрицы.Я не думаю, что Matlab потрудился обернуть эти классы самостоятельно, потому что они всегда были бы одинаковыми.

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

PS Я не думаю,структуры должны быть когда-либо использованы, потому что нет способа узнать, какие члены у них есть, без их отладки.

Если вы делаете

a.num = [1 2 3]
a.char = 'A'

Если вы не расскажете всем, что a.num и a.char существуют, невозможно узнать, что a имеет char и num без выполнения кода.Плохая плохая практика.

0 голосов
/ 09 марта 2011

Да, если вы не сохраните значения ASCII, но я не думаю, что это было бы очень полезно.

Редактировать: Или массив структур?

a.num = [1 2 3]
a.char = 'A'

Я не знаю точно, чего вы пытаетесь достичь ...

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