Это классический вопрос информатики 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 без выполнения кода.Плохая плохая практика.