Xin lỗi vì làm sống lại một câu hỏi cũ nhưng tôi hiện đang làm việc trên một mã nguồn mở C++ thư viện mà chính xác câu trả lời câu hỏi này:
KeyCpp là một mã nguồn mở C++ thư viện cung cấp cú pháp MATLAB/Octave giống như một số số hữu ích phương pháp và cũng có một số chức năng âm mưu. Hiện tại, có chức năng cho eig
, ode45
, fft
, linsolve
, svd
, interp1
, plot
và nhiều chức năng MATLAB phổ biến khác.
Trong khi có các thư viện khác (rất tốt) cung cấp nhiều chức năng (như Armadillo, Eigen, vv), hầu hết không phải là thư viện số và hầu hết cú pháp của chúng không giống với cú pháp của MATLAB. Trong khi KeyCpp cũng chưa phải là một thư viện số hoàn chỉnh (nhưng đang cải thiện tất cả thời gian!), Cú pháp là gần gũi với MATLAB như ngôn ngữ C++ cho phép.
Trong KeyCpp, để vẽ các vectơ t
và y
chúng ta sử dụng cú pháp sau: (Đi here cho một ví dụ mở rộng hơn)
#include <iostream>
#include <keycpp/keycpp.h>
using namespace keycpp;
int main(int argc, char** argv)
{
// Lets create some data: y = sin(t)
std::vector<double> t = linspace(-pi,pi,100);
std::vector<double> y = sin(t);
Figure h;
h.plot(t,y,"-b");
h.grid_on();
h.legend({"Series 1"});
h.title("Example Plot");
h.xlabel("time");
h.ylabel("y");
return 0;
}
Các chức năng của thư viện KeyCpp lợi dụng LAPACK, Gnuplot và odeint (từ Tăng cường). Các dự án nguồn mở sau đây đã được đưa vào thư viện này: Kiss FFT, Gnuplot-cpp.
Tài liệu Doxygen cho hầu hết các chức năng nằm ở here
+1 cho ma trận tăng. Bạn có bất kỳ gói nội suy nào có thể thực hiện các chức năng tương tự như griddata không? – Jacob
http://www.scimath.com/ có một số chức năng khá tốt, không đặc biệt là griddata, nhưng với nội suy 3-d bạn có thể sử dụng chức năng griddata khá dễ dàng. – DeusAduro