У меня есть два массива ячеек строк, и я хочу проверить, содержат ли они одни и те же строки (они не должны быть в одном порядке, и мы не знаем, одинаковые длины).MATLAB: сравнение массивов ячеек строки
Например:
a = {'2' '4' '1' '3'};
b = {'1' '2' '4' '3'};
или
a = {'2' '4' '1' '3' '5'};
b = {'1' '2' '4' '3'};
Сначала я подумал о strcmp
, но это потребует более зацикливания один содержимого ячейки и сравнить друг против друга. Я также рассмотрел ismember
, используя что-то вроде:
ismember(a,b) & ismember(b,a)
, но тогда мы не знаем заранее, что они имеют одинаковую длину (очевидный случай неравных). Итак, как бы вы могли выполнить это сравнение наиболее эффективным способом, не записывая слишком много случаев if/else.
Чтобы оценить производительность, вам понадобится другое решение для сравнения, например, предложение, сделанное с использованием цикла и [STRCMP] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/strcmp. HTML). Я предполагаю, что производительность будет прекрасной, но если вы обнаружите, что использование [SETXOR] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/setxor.html) действительно заканчивается тем, что узкое место в вашей обработке, вы можете попробовать посмотреть его исходный код ('type setxor' или' edit setxor') и переписать его, обрезая некоторую проверку ошибок и т. д. – gnovice
спасибо, я думаю, я вижу, что @Mikhail пытался делать. Как насчет производительности? кажется, что XOR двух наборов - дорогостоящая операция, когда все, что мне нужно, - это истинный/ложный ответ – Dave
oops, я отредактировал свой комментарий и испортил заказ .. извините – Dave