2015-03-27 17 views
13

Chúng ta đều biết các nhà điều hành matlab ruột để tạo ra một chuỗi tuyến tính, tức làhành vi của nhà điều hành dấu hai chấm (:) với ma trận hoặc vector luận

1:5 = [1 2 3 4 5] 

Bây giờ tôi thấy rằng những lập luận của các nhà điều hành thư đại tràng cũng có thể được áp dụng vectơ hoặc ma trận. Tuy nhiên tôi không hiểu định nghĩa đằng sau.

Ví dụ

[1 2 3 4]:5 == [1 2 3 4 5] 

[1 2; 3 4]:3 == [1 2 3] 

Tại sao điều này?

Đối số thứ hai có thể là vectơ hoặc ma trận.

Cuối cùng, tôi muốn hiểu trình tự như

1:2:3:4:5 

đó là hoàn toàn hợp pháp trong matlab và [1 5] bằng cách này!

Lưu ý 1:2:3:4:5:6 được liên kết bên trái, được phân tích cú pháp là ((1:2:3):4:5):6.

Vậy hành vi của toán tử kết nối với các đối số ma trận/vectơ là gì?

CHỈNH SỬA: sửa câu lệnh kết hợp trái.

+1

Theo kinh nghiệm của tôi (tôi chưa tìm kiếm tài liệu), '[a b c]: [d e; f g] 'tương đương với' a: d'. Đó là, dấu hai chấm chọn phần tử đầu tiên của mỗi vector hoặc ma trận –

+0

@LuisMendo: Có, tôi có thể xác nhận bằng thực nghiệm. Tôi không tìm thấy nó trong tài liệu. – Jonas

Trả lời

11

Các documentation cho các nhà điều hành ruột nói:

Nếu bạn chỉ định mảng nonscalar, MATLAB giải thích j: i: k là j (1): i (1): k (1).

ví dụ đầu tiên của bạn được hiểu là 1:3, thứ hai là 1:5

Expressions với hơn hai : được phân tích cú pháp trái kết hợp:

a:b:c:d:e==(a:b:c):d:e 

.

>> 1:2:3:4:5 

ans = 

    1  5 
+2

Vì vậy, nó xuất hiện trong tài liệu! (+1) –

+1

Tốt bắt, tôi đọc tài liệu nhiều lần, nhưng không thấy câu này. –

+0

nhưng khiếu nại cuối cùng của bạn không chính xác. -2: -1: 1: 5: 7 == [] nhưng dấu hai chấm ([- 2 -1 1], 5,7) = [-2, 3]. Đồng thời (-2: -1): 1: 5: 7 khác -2: -1: 1: 5: 7. Kết luận, tôi nghĩ nó đúng như tôi đã nói trong câu hỏi: a: b: c: d: e được phân tách thành ((a: b: c): d): e –

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