GNU Octave là ngôn ngữ lập trình khoa học, được thiết kế cho mục đích chính là thực hiện các tính toán số như thao tác với ma trận, vẽ đồ thị hàm số….
Octave tương thích hầu hết với các cấu trúc lệnh của Mathlab nhưng lại miễn phí nên được khuyên dùng là giải pháp thay thế, sử dụng chủ yếu cho mục đích giáo dục và nghiên cứu.

Do tham gia khoá học Machine Learning trên Coursera có yêu cầu sử dụng nên mình đã cài đặt và chạy thử trên macOS.

Môi trường của mình như sau:

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14.1
BuildVersion:	18B75

Octave được hỗ trợ cài đặt bằng rất nhiều công cụ, tuy nhiên các dễ nhất là cài bằng Homebrew. Nếu chưa có Homebrew thì có thể cài đặt đơn giản bằng 1 dòng lệnh:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Nếu ai đã cài Homebrew, ta chạy dòng lệnh dưới để update các gói package đã cài lên bản mới nhất.

$ brew update && brew upgrade

Tiếp theo ta lần lượt tiến hành cài Octave với Qt GUI như sau:

$ brew install qt
$ brew install octave --with-qt

Sẽ mất vài phút để cài xong. Sau khi xong, ta tạo file thiết lập môi trường cho Octave như sau:

$ vim ~/.octaverc

Thêm dòng dưới đây để thiết lập môi trường. Chú ý cần khởi động lại terminal để thiết lập mới được áp dụng.

setenv('GNUTERM','qt')
graphics_toolkit("fltk")

Octave khuyến cáo có thể cài thêm gnuplot để hiển thị đồ thị tốt hơn. Tuy nhiên mình thấy dùng default cũng khá OK. Có thể cài thêm như sau:

$ brew install gnuplot --with-qt

Sau khi cài xong, ta sửa dòng cuối ở file .octaverc vừa tạo, thay fltk bằng gnuplot.

graphics_toolkit("gnuplot")

Chạy thử Octave

Ta khởi động Octave từ Terminal

$ octave

Ta tiến hành vẽ 2 đồ thị hàm sin, cos bằng một vài lệnh như bên dưới.

octave:1> t=[0:0.01:0.98];
octave:2> y1 = sin(2*pi*4*t);
octave:3> y2 = cos(2*pi*4*t);
octave:4> plot(t,y1);
octave:5> hold on;
octave:6> plot(t,y2);
octave:7> xlabel('time')
octave:8> ylabel('value')
octave:9> legend('sin','cos')
octave:10> title('my plot')

Biểu đồ thi được như bên dưới.

Ta có thể xuất biểu đồ ra file ảnh bằng câu lệnh

octave:11> print -dpng 'myplot.png'