2012-02-02 67 views

Trả lời

16

Bạn có thể làm như sau:

x = ~x; 
+0

Wow. Đó thậm chí còn ngắn hơn tôi có thể mơ ước. Tôi nên ra ngoài nhiều hơn. Cảm ơn – CaptainProg

+1

Nếu bạn muốn tìm hiểu thêm, hãy truy cập trực tuyến tài liệu Matlab doco (chạy 'doc()') và xem MATLAB> Hàm> Lập trình và Kiểu dữ liệu> Phần Hoạt động hợp lý. Nó có một loạt các nhà khai thác như thế này. :) –

6

u có thể sử dụng tuyên bố phủ định. Tôi không thể nhớ làm thế nào nó hoạt động trong matlab, nhưng tôi nghĩ rằng là một cái gì đó giống như

x = ~x; 
6

câu trả lời của Franck là tốt hơn (sử dụng ~), nhưng tôi chỉ muốn chỉ ra rằng các điều kiện trong bạn là hơi dư thừa. Thật dễ dàng để quên rằng, vì bạn đã có một giá trị boolean, bạn không cần phải thực hiện một so sánh trong điều kiện của bạn. Vì vậy, bạn có thể vừa làm điều này ...

if x 
    x = false; 
else 
    x = true; 
end 
+1

Lưu ý rằng mã này (và mã OP) chỉ đúng nếu 'x' là vô hướng. Nếu x là nonscalar, có một 'all (x)' ẩn xung quanh nó khi được sử dụng trong một bối cảnh boolean, giống như đối số cho 'if'. Ví dụ, nếu 'x' là' [1 1 1 0] ', nó sẽ được coi là sai, và được thay thế bằng' true'. Toán tử '~' là phần tử, vì vậy nó sẽ làm việc với các mảng. (Trừ các mảng trống khi được sử dụng với 'if'; đó là trường hợp cạnh riêng biệt.) –

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