5. CHƯƠNG V: SCRIPTS VÀ FUNCTIONS (M-FILES)
5.6. Vòng lặp (for và while)
* Vòng lặp for...end
-Được sử dụng khi ta muốn lặp một đoạn mã lệnh cho một số lần tùy ý (thực ra ta sẽ ít dùng đến nó trong Matlab hơn là trong các ngôn gnữ lập trình khác, bởi vì Matlab cung cấp cho ta toán tử :)
- Ví dụ, vẽ đồ thị sin(n..x) trong khoảng -1x1 với các giá trị khác nhau của n = 1, 2, ...8.
- Thực thi: Chúng ta có thể đưa ra 8 lệnh vẽ riêng rẽ, nhưng sẽ dễ dàng hơn nhiều nếu ta sử dụng một vòng lặp. Dạng đơn giản nhất của nó sẽ là
>> x = -1:.05:1;
>> for n = 1:8 (shift + )
subplot(4,2,n), plot(x,sin(n*pi*x)) (shift + )
end
Tất cả các lệnh giữa hai dòng bắt đầu bằng ‘for’ và kết thúc bằng ‘end’ đều được lặp đi lặp lại với n=1 lần thứ nhất, n=2 lần thứ 2... cho tới khi n=8.
Lệnh subplot tạo ra một mảng 4x2 cửa sổ đồ thị con trong một đồ thị chính. Ở lần lặp thứ n, một hình sẽ được vẽ lên cửa sổ đồ thị con thứ n.
Hình vẽ: Minh họa cho vòng lặp for...end
- Được sử dụng khi bạn muốn thực hiện lặp đi lặp lại một đoạn mã lệnh của Matlab cho tới khi một điều kiện (logic) nào đó được thỏa mãn, nhưng ta không thể nói trước nó sẽ cần lặp bao nhiêu lần. Khi đó chúng ta có thể sử dụng vòng lặp này.
- Ví dụ, tìm giá trị lớn nhấtcủa n sao cho tổng dưới đây vẫn nhỏ hơn 100?
2 2 2 2 ... 3 2 1 n
- Mã lệnh cho Matlab thực thi nhiệm vụ trên:
>> S = 1; n = 1; >> while S+ (n+1)^2 < 100 (shift + ) n = n+1; S = S + n^2; (shift + ) end >> [n, S] ans = 6 91
- Ví dụ khác: Tìm giá trị gần đúng của nghiệm phương trìnhx=cos(x) ?