Tôi có hai mảng ô của chuỗi và tôi muốn kiểm tra xem chúng có chứa các chuỗi giống nhau hay không (chúng không nhất thiết phải theo cùng một thứ tự, cũng như chúng ta không biết chúng có cùng độ dài).MATLAB: so sánh mảng ô của chuỗi
Ví dụ:
a = {'2' '4' '1' '3'};
b = {'1' '2' '4' '3'};
hoặc
a = {'2' '4' '1' '3' '5'};
b = {'1' '2' '4' '3'};
Trước tiên tôi nghĩ đến strcmp
nhưng nó sẽ đòi hỏi lặp trên một nội dung di động và so sánh với người kia. Tôi cũng coi ismember
bằng cách sử dụng một cái gì đó như:
ismember(a,b) & ismember(b,a)
nhưng sau đó chúng ta không biết trước rằng họ có cùng độ dài (trường hợp rõ ràng của bất bình đẳng). Vì vậy, làm thế nào bạn sẽ thực hiện so sánh này một cách hiệu quả nhất mà không cần viết quá nhiều trường hợp nếu/else.
Để đánh giá hiệu suất, bạn sẽ cần một giải pháp khác để so sánh, như đề xuất bạn đã thực hiện bằng vòng lặp và [STRCMP] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/strcmp. html). Tôi tưởng tượng hiệu suất sẽ hoàn toàn tốt đẹp, nhưng nếu bạn phát hiện ra rằng việc sử dụng [SETXOR] (http://www.mathworks.com/access/helpdesk/help/techdoc/ref/setxor.html) thực sự kết thúc là một nút cổ chai trong quá trình xử lý của bạn, bạn có thể thử xem mã nguồn của nó ('type setxor' hoặc' edit setxor') và viết lại nó bằng cách cắt bớt một số kiểm tra lỗi, v.v. – gnovice
cảm ơn, tôi nghĩ rằng tôi thấy những gì @Mikhail đang cố gắng làm. Điều gì về hiệu suất? có vẻ như XOR của hai bộ là một hoạt động tốn kém khi tất cả tôi cần là một loại câu trả lời đúng/sai – Dave
oops, tôi đã chỉnh sửa nhận xét của mình và làm rối trật tự .. xin lỗi – Dave