5
Giả sử tôi có các đầu vào data = [1 2 3 4 5 6 7 8 9 10]
và num = 4
. Tôi muốn sử dụng chúng để tạo ra những điều sau đây:Làm cách nào để tạo ma trận và véc tơ sau từ dữ liệu đầu vào đã cho trong MATLAB?
i = [1 2 3 4 5 6; 2 3 4 5 6 7; 3 4 5 6 7 8; 4 5 6 7 8 9]
o = [5 6 7 8 9 10]
mà là dựa trên logic sau đây:
length of data = 10
num = 4
10 - 4 = 6
i = [first 6; second 6;... num times]
o = [last 6]
gì là cách tốt nhất để tự động này trong MATLAB?
@Jacob: Thật buồn cười, tôi đã học về chức năng ma trận xây dựng như thế này tương đối gần đây (trên thực tế, từ một câu trả lời ở đây trên SO: http: // stackoverflow.com/questions/1000535/how-can-i-create-a-triangular-matrix-based-on-a-vector-in-matlab/1000889#1000889), và bây giờ tôi biết chúng tôi tiếp tục tìm kiếm * sooo * nhiều nơi để sử dụng chúng. ;) – gnovice
Đẹp. Tôi đã sử dụng một cái gì đó dựa trên circshift, nhưng điều này là nhiều hơn nữa thanh lịch – Kena
chỉ là dữ liệu của tôi sẽ không phải luôn luôn '1: 10', vì vậy tôi đã sử dụng' o = dữ liệu (:, (num + 1: end)) ; '. Tôi đã nghĩ đến việc sử dụng nhiều cho các vòng lặp để đạt được như vậy. 'hankel' chỉ đơn giản hơn rất nhiều. – Lazer