В Matlab у меня есть следующие две структуры данных b и c, определенные следующим образом.Как использовать член Matlab в структурах данных с несколькими вложенными полями?
b(1).b = struct('c',{'a', 'b', 'c'})
c(1).b = struct('c',{'b', 'a', 'c'})
Теперь я хочу использовать ismember
, чтобы выяснить, если элементы Ь (1) .bc содержатся в с (1) .bc и если да, то какие индексы с (1) .bc каждого из элементы принадлежат.
Например: b(1).b(1).c = a
, я хочу трассировку это структурировать c
найти какой индекс структуры c
«а» принадлежит (она должна возвращать 2, так как «а» является вторым элементом структуры c
).
Я попытался
[~, ind] = ismember({b(1).b.c},{c(1).b.c})
, который работал для меня ранее с другой структурой данных, но теперь я получаю следующее сообщение об ошибке:
*Error using cell/ismember>cellismemberR2012a (line 192)
Input A of class cell and input B of class cell must be cell arrays of strings, unless one is a string.
Error in cell/ismember (line 56)
[varargout{1:max(1,nargout)}] = cellismemberR2012a(A,B);*
Я не знаю, почему он не работает. Кто-нибудь знает, как это исправить? Спасибо.
Использование вашего точного кода в R2011a (версия 7.12.0.635) работает так, как вы ожидаете дать [2 1 3]. Какую версию Matlab вы используете? – TallBrianL
Интересно, это также сработало и для меня – madbitloman
Прекрасно в 2012b. Существуют ли какие-либо другие переменные в рабочем пространстве Matlab, которые могут быть противоречивыми? (Например, существует ли уже структура 'b'?) – David