2013-12-04 2 views
0

В Haskell существует структура, называемая «кортежи», которая позволяет объединить пары элементов (Ie: (1,2), («A», «B») и т. Д.)Соответствие структуры кортежа в Matlab

Мне было интересно, было ли что-то подобное в Matlab, чтобы я мог сопоставлять элементы, а затем запросить matlab так же, как «Если элемент X сопоставляется с Y тогда .. else ..»

Спасибо!

+1

В зависимости от типа данных, вы можете использовать 'structs' или' cells'. – fuesika

+0

вроде как словарь/карта? – MZimmerman6

ответ

3

Шкаф, который я знаю в MATLAB, это использовать объект map. Они довольно просты в использовании. Вы можете создать следующим образом

someMap = containers.Map(); 

Добавление нового ключа довольно легко, как хорошо

someMap('someKey') = 'someValue'; 

Основные потребности быть строкой по умолчанию, но это может быть отредактирован. Вы также можете проверить, если ключ уже существует по телефону

someMap.isKey('someKey') 

и значения доступны, просто вызывая

someMap('someKey') 

Это должно имитировать поведение, которое вы ищете. Вы всегда можете прочитать больше, посмотрев документацию. containers.Map

2

Простой cell array может быть в состоянии сделать трюк для вас:

C = {1, 2; 'A' 'B'} 

Теперь вы можете легко выполнять тесты на нем, например:

strcmp(C, 'A') 
+0

Единственная проблема заключается в том, что на самом деле это не означает, что для одного результата будет выполнено одно совпадение. Сравнение вернет полный вектор 1 и 0, который потребует некоторой дополнительной обработки. – MZimmerman6

+0

@ MZimmerman6 Не сложно сравнить ваше значение с одним элементом, например 'C {1,:} == 2'. Или найти номер индекса: '[C {1,2}] == 2'. –

+0

Я знаю, я никогда не говорил, что это так. Я просто сказал, что strcmp вернет вектор. Вы, безусловно, можете, это будет так, как я сказал, сделайте немного больше обработки. Преимущество карты, как я предположил, заключается в том, что она является постоянным временем доступа и на самом деле не требует дополнительной обработки – MZimmerman6

Смежные вопросы