2012-10-18 39 views
9

Tôi chỉ tò mò tại sao Matlab có thể so sánh một ma trận trống với ma trận đơn. Đặc biệtTại sao Matlab có thể so sánh một ma trận trống với ma trận đơn?

>> [] == [1]

ans =

[]

Nó chỉ có vẻ kỳ quặc rằng nó sẽ làm điều đó và tôi chỉ tự hỏi tại sao nó sẽ làm điều đó. Điều này cũng hoạt động cho các hoạt động so sánh khác (< =, <,> =,>,! =). Nó cho một lỗi nếu kích thước của hàng hoặc cột lớn hơn một.

Cảm ơn!

Chỉnh sửa: Tôi cũng tin rằng họ làm việc này cho các nhà khai thác khác, chẳng hạn như cộng, trừ, vv

Trả lời

10

[] (ma trận trống) được coi là biểu diễn ma trận hợp lệ có kích thước 0x0 bởi MATLAB. Từ các tài liệu cho eq chức năng, đó là những gì được gọi là khi bạn sử dụng toán tử == để so sánh ma trận, hành vi này là như sau:

A == B so sánh từng phần tử của mảng A cho bình đẳng với các phần tử tương ứng của mảng B, và trả về một mảng với các yếu tố thiết lập để logic 1 (true), nơi AB đều bình đẳng, hoặc logic 0 (false) nơi họ không bằng nhau. Mỗi đầu vào của biểu thức có thể là một mảng hoặc giá trị vô hướng.

...

Nếu một đầu vào là vô hướng và người kia một mảng nonscalar thì đầu vào vô hướng được xử lý như thể nó là một mảng có cùng kích thước như mảng đầu vào nonscalar.

Trong sự so sánh [] == [1], các toán hạng bên trái là phi vô hướng (isscalar([]) lợi nhuận 0) trong khi các toán hạng bên phải là vô hướng. Vì vậy, quy tắc mở rộng vô hướng áp dụng và toán hạng vô hướng được mở rộng đến kích thước của toán hạng phi vô hướng (trong trường hợp này là 0x0) và kết quả là một ma trận trống.

+0

Ah-ha! Cảm ơn! Điều đó làm cho rất nhiều ý nghĩa. Tôi cảm thấy ngớ ngẩn Tôi không thấy rằng nó sẽ là một vô hướng. Chúng tôi đang thực hiện một tập hợp con của MATLAB trong lớp của chúng tôi và chúng tôi đã có lý do tại sao Matlab sẽ làm điều đó. – user1348913

2

Từ documentation: Nếu một trong các toán hạng là một vô hướng và khác một ma trận, các đại lượng vô hướng mở rộng để kích thước của ma trận.

Đây là trường hợp chung (hơi lẻ) của vô hướng "mở rộng" để khớp với kích thước của ma trận mà nó đang được so sánh với. Với vô hướng, kích thước của mảng khác có thể là bất cứ thứ gì. Điều đó không đúng đối với các so sánh mảng nonscalar.

Các vấn đề liên quan