Tính toán mô phỏng với Matlab

Tính toán mô phỏng với Matlab - Lập trình GUI với Matlab
- Phương pháp phần tử hữu hạn
- Tính toán mô phỏng

08/06/2022

Đoạn code sau đây khởi tạo neural network, train và thực hiện dự đoán.

% load data
load house_dataset.mat % data given by Matlab

x = houseInputs; % 13 features, 506 samples
t = houseTargets; % 1 output for each sample

% Select a Training Function

trainFcn = 'trainlm'; % Levenberg-Marquardt backpropagation.
% trainFcn = 'trainscg'; % Scaled Conjugate Gradient

% Create a Network
hiddenLayerSize = [10,10]; % 1 hidden layer with 10 neurons
% hiddenLayerSize = [5, 10]; % 2 hidden layers. The first layer has 5
% neurons. The second layer has 10 neurons
net = fitnet(hiddenLayerSize,trainFcn);

% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 70/100; % 70% of data for training
net.divideParam.valRatio = 15/100; % 15% of data for validation
net.divideParam.testRatio = 15/100; % 15% of data for testing

% Train the Network
[net,tr] = train(net,x,t);

%% Test the Network
y = net(x); % predicted values by the network
e = gsubtract(t,y) % difference between target values and predicted values
performance = perform(net,t,y) % mean squared error

%% View the Network
view(net)

% ==========================================

Lưu ý:
1. Neural network được cung cấp sẵn bởi Matlab. Ta chỉ cần gọi ra, thiết lập thông số và sử dụng, không cần phải xây dựng mọi thứ từ đầu.
2. Dữ liệu trong đoạn chương trình trên là dữ liệu cho sẵn bởi Matlab. Để dùng cho ứng dụng cụ thể, ta cần thu thập dữ liệu, làm sạch dữ liệu và chuẩn hóa dữ liệu trước khi dùng.

Bài toán người bán hàng - Bài 2: Một số phương thức tìm lời giảiNhư đã trình bày ở Bài 1, nếu ta thực hiện tất cả các ho...
31/03/2022

Bài toán người bán hàng - Bài 2: Một số phương thức tìm lời giải

Như đã trình bày ở Bài 1, nếu ta thực hiện tất cả các hoán vị có thể thì chắc chắn sẽ tìm được lời giải tốt nhất (đường đi ngắn nhất) cho bài toán người bán hàng. Tuy nhiên điều này là không khả thi nếu phải đi qua số lượng lớn điểm.

Thay vào đó, ta sẽ dùng các thuật toán tìm kiếm. Về nguyên tắc ta sẽ cần nhiều vòng lặp và trong mỗi vòng lặp sẽ phải lưu lại một tập hợp hữu hạn lời giải (10, 20, 30, 40 ... lời giải, số lượng tùy chọn). Với mỗi bước lặp, ta sẽ thực hiện sự thay đổi vừa phải (thay đổi một phần) với các lời giải đã có, với kỳ vọng là sẽ tìm được những lời giải mới tốt hơn.

Dưới đây là một số phương thức thường dùng để biến đổi lời giải đã có thành lời giải mới:

Phương thức 2-opt (xem thêm hình minh họa)
Từ một đường đi cho trước, ta sẽ tạo ra đường đi mới thông qua các bước:
- B1. Xóa đoạn nối từ điểm I đến điểm I+1 và đoạn nối điểm J đến J+1 (J > I + 1)
- B2. Nối I tới J, nối I+1 tới J+1
- B3. Đảo lại chiều di chuyển của các đoạn từ I+1 đến J

Phương thức 3-opt (xem thêm hình minh họa)
Tương tự 2-opt, nhưng ta sẽ xóa 3 đoạn trên đường đi cũ để tạo ra đường đi mới. Sẽ có 8 cách nối (bao gồm đường đi ban đầu và 7 đường đi mới)

Trên thực tế có thể mở rộng đến k-opt (xóa k đoạn và tìm các cách nối mới)

(Còn tiếp)

Vẽ hoa hồng trên Matlab cho ngày 14/2 với kiến thức hình học trên tọa độ trụn = 800;A = 1.995653;B = 1.27689;C = 8;r=lin...
14/02/2022

Vẽ hoa hồng trên Matlab cho ngày 14/2 với kiến thức hình học trên tọa độ trụ

n = 800;
A = 1.995653;
B = 1.27689;
C = 8;
r=linspace(0,1,n);
theta=linspace(-2,20*pi,n);
[R,THETA]=ndgrid(r,theta);
% define the number of petals we want per cycle. Roses have 3 and a bit.
petalNum=3.6;
x = 1 - (1/2)*((5/4)*(1 - mod(petalNum*THETA, 2*pi)/pi).^2 - 1/4).^2;
phi = (pi/2)*exp(-THETA/(C*pi));
y = A*(R.^2).*(B*R - 1).^2.*sin(phi);
R2 = x.*(R.*sin(phi) + y.*cos(phi));
X=R2.*sin(THETA);
Y=R2.*cos(THETA);
Z=x.*(R.*cos(phi)-y.*sin(phi));
% % define a red map for our rose colouring
red_map=linspace(1,0.25,10)';
red_map(:,2)=0;
red_map(:,3)=0;
clf
surf(X,Y,Z,'LineStyle','none')
view([-40.50 42.00])
colormap(red_map)

(link: https://www.matlabcoding.com/2021/07/matlab-code-to-make-rose-in-matlab.html)

Bài toán người bán hàng - Bài 1Bài toán người bán hàng (Traveling Salesperson Problem – TSP) là bài toán tối ưu hóa kinh...
13/02/2022

Bài toán người bán hàng - Bài 1

Bài toán người bán hàng (Traveling Salesperson Problem – TSP) là bài toán tối ưu hóa kinh điển, trong đó cho trước n địa điểm. Người bán hàng xuất phát từ một địa điểm và cần tìm con đường ngắn nhất để đi qua tất cả các điểm rồi trở về vị trí xuất phát, với điều kiện mỗi địa điểm chỉ được đến một lần.
Dễ dàng thấy được sẽ có (n-1)! giải pháp. Tính toán chiều dài quãng đường của tất cả các giải pháp này, ta chắc chắn sẽ chọn được quãng đường ngắn nhất. Đó là chiến thuật vét cạn (brute force). Tuy nhiên, khi n càng lớn, số lượng giải pháp phải xét sẽ cực kì nhiều (ví dụ: n = 16 thì (n-1)! = 15! xấp xỉ 10^12), đồng nghĩa với tốn kém nhiều thời gian tính, khiến cho việc áp dụng vét cạn trở nên đắt đỏ và kém tính thực tế.
Khi đó, áp dụng các thuật toán tìm kiếm là phương án phù hợp hơn, bởi vì sẽ tìm được lời giải tốt sau N lần thử, với N nhỏ hơn nhiều so với (n-1)! Nhược điểm của thuật toán tìm kiếm là vẫn có thể vướng vào hội tụ cục bộ (tức là chưa tìm ra được con đường thật sự ngắn nhất trong (n-1)! con đường), đặc biệt khi n lớn. Tuy nhiên, đây vẫn là một giải pháp tốt (tốt hơn nhiều so với xuất phát điểm) và thu được với thời gian/chi phí chấp nhận được.
Các phiên bản mở rộng:
- Có nhiều người giao hàng (xe, phương tiện …) cùng tham gia, mỗi người phụ trách một nhóm địa điểm không trùng nhau (Vehicle routing problem - VRP). Mỗi người giao hàng sẽ có giới hạn về năng lực (giới hạn về quãng đường đi được, hoặc giới hạn về số hàng mang được).
- Vừa nhận hàng vừa giao hàng (pickup/delivery)
- Hàng hóa phải được giao/nhận trong khung thời gian nhất định (time windows)
- Có nhiều điểm xuất phát cho xe (kho hàng chẳng hạn)
- …
Bài toán TSP/VRP và các biến thể của nó được ứng dụng nhiều trong quy hoạch vận tải/logistics.

Gửi các bạn link code mô phỏng pháo hoa. Link này có sẵn trên trang chia sẻ của Mathworks.Với một chút kiến thức về động...
01/02/2022

Gửi các bạn link code mô phỏng pháo hoa. Link này có sẵn trên trang chia sẻ của Mathworks.

Với một chút kiến thức về động học và kỹ năng code, chúng ta có thể tạo ra được hình ảnh pháo hoa trên matlab. Theo ad thì code này viết khá rõ ràng, rất thích hợp với những bạn mới bắt đầu làm quen với matlab.

Link:

function for fireworks

01/02/2022

Chúc mừng năm mới Nhâm Dần 2022!

Chúc cả nhà một năm an vui. Công việc, học hành ngày càng tấn tới.

06/10/2021

Tăng tốc tính toán trong MATLAB

Đa số chúng ta chỉ mới quan tâm đến việc code ra kết quả chính xác, nhưng chưa chú ý đúng mức viết code sao cho chạy nhanh và chính xác.
Đối với chương trình gọi nhiều hàm, trước hết chúng ta sẽ sử dụng profiler để xem tỉ lệ thời gian chạy ở hàm nào là lớn nhất. Đối với một hàm cụ thể, phần tốn thời gian trong một đoạn code chính là các vòng lặp (ví dụ for). Do đó, ta tập trung giảm thời gian chạy các vòng lặp này.
Trong MATLAB, chúng ta có 2 cách như sau: tính toán song song (parallel computing) và tính toán dựa trên ma trận (vectorization)
1. Tính toán song song (parallel computing)
Để tiến hành tính toán song song, chỉ cần đổi các lệnh for thành parfor. Tuy nhiên cần lưu ý các yếu tố sau:
- Máy tính có hỗ trợ chạy song song (2 cores trở lên chẳng hạn)
- Các biểu thức tính toán trong mỗi vòng for phải độc lập với nhau. Ví dụ đoạn code dưới đây sẽ không chạy parfor được, vì vòng thứ ii cần phải lấy kết quả của vòng (ii-1) trước đó

tic
z = 1:1:1000;
S = zeros(1,1000);
S(1) = 1;
parfor ii = 2:1000
S(ii) = S(ii-1) + z(ii);
end
toc

2. Tính toán dựa trên ma trận (vectorization)
MATLAB khá mạnh trong việc tính toán ma trận. Do đó nếu chúng ta triệt để tận dụng điều này và giảm thiểu các vòng for thì sẽ đẩy nhanh đáng kể tốc độ tính toán.

Ví dụ đoạn code dưới đây tính giá trị hàm F(x,y) = x * exp(x^2 + y^2):

tic
x = linspace(-2,2,168); % 1-by-168
y = linspace(-1.5,1.5,128); % 1-by-128
F1 = zeros(length(x), length(y)); % 168-by-128
for ii = 1:length(x)
xi = x(ii);
for jj = 1:length(y)
yj = y(jj);
F1(ii,jj) = xi*exp(-xi^2 - yj^2);
end
end
toc

Thời gian tính toán sẽ giảm đáng kể nếu đoạn code được viết lại theo kiểu vectorization:

tic
x = linspace(-2,2,168); % 1-by-168
y = linspace(-1.5,1.5,128); % 1-by-128
% prepare 168-by-128 matrices
xx = repmat(x',1,128);
yy = repmat(y,168,1);
% Calculate
F2 = xx.*exp(-xx.^2 - yy.^2); % 168-by-128
toc

Hiện tại có nhiều bạn inbox đề nghị ad chia sẻ code hệ dầm/giàn v.v...Ad xin nói luôn là các code hệ dầm/giàn được chia ...
28/08/2021

Hiện tại có nhiều bạn inbox đề nghị ad chia sẻ code hệ dầm/giàn v.v...

Ad xin nói luôn là các code hệ dầm/giàn được chia sẻ rất nhiều trên website của Mathworks - hãng phát triển Matlab (dĩ nhiên là mỗi code sẽ tập trung vào tính toán một vài yếu tố gì đó thôi, chứ không thể có ở dạng một phần mềm tương đối đầy đủ với giao diện người dùng và tính toán nhiều yếu tố được). Các bạn cứ search Matlab File Exchange trên website Mathworks nhé.

Nền tảng lý thuyết của các code nói chung là phương pháp phần tử hữu hạn. Như vậy ít nhiều để hiểu code thì các bạn phải biết về phần tử hữu hạn, rồi sau đó có thể bổ sung thêm tính năng (có thể đơn giản chỉ là viết thêm vài đoạn để kết nối các code do những người khác nhau chia sẻ), bổ sung thêm giao diện nếu muốn.

Ví dụ ở đây là một code tính hệ giàn 2D của Alex Kolarich:

https://www.mathworks.com/matlabcentral/fileexchange/70508-truss-2d?s_tid=FX_rc3_behav

Trong code này có phần main (chạy chính) và hai function kèm theo. Khi download về thì bạn cần chép hai function đó ra thành hai file .m riêng. Chứ để nguyên trong file main thì không chạy được nhé.

Về cơ bản thì người dùng chỉ cần thay đổi các thông số đầu vào (dòng 45 - 63) như: tọa độ nút, sự liên kết các nút (hai nút tạo thành một thanh giàn), vị trí các nút chịu ràng buộc hoặc chịu tải.

2-Dimensional truss solver using finite element method

Tối ưu topology (TO) đang nổi lên trong vài năm gần đây và hiện đã được tích hợp trong nhiều phần mềm thiết kế và phân t...
07/06/2021

Tối ưu topology (TO) đang nổi lên trong vài năm gần đây và hiện đã được tích hợp trong nhiều phần mềm thiết kế và phân tích mô phỏng. Vậy 𝐓𝐎 𝐥𝐚̀ 𝐠𝐢̀? 𝐓𝐚̣𝐢 𝐬𝐚𝐨 𝐧𝐨́ 𝐥𝐚̣𝐢 𝐜𝐚̂̀𝐧 𝐭𝐡𝐢𝐞̂́𝐭?

Về bản chất, TO là một phương pháp toán học nhằm là tối ưu hóa sự phân bố vật liệu trong phạm vi không gian cho trước, có xét điều kiện về liên kết và chịu lực.

Kết quả TO cho phép các kỹ sư lựa chọn giải pháp thiết kế đạ cân bằng giữa sức bền và khối lượng, thông thường là bằng cách bỏ đi những vùng không ảnh hưởng tới khả năng chịu lực. Nói cách khác, mẫu thiết kế có khả năng chịu được mức tải yêu cầu, trong khi làm giảm nhẹ khối lượng. Để thực hiện điều này, cần có sự hỗ trợ của máy tính.

TO không bj ảnh hưởng bởi các yếu tố mang tính cảm quan. Trong một số trường hợp, TO ra kết quả có hình dạng lạ mắt với những gì thường thấy. Vì vậy, TO cũng cho phép người thiết kế tạo ra sản phẩm có kiểu dáng độc đáo, khác biệt. Bên cạnh đó, sự khác lạ này tạo ra mối liên kết giữa TO và sản xuất bằng cách đắp dần (Additive Manufacturing – AM), mà in 3D là ví dụ. Bản thiết kế thu được sau khi tối ưu topology sẽ được tạo mẫu nhanh thông qua in 3D để minh họa trực quan và mang đi thử nghiệm.

Hình bên dưới là Tòa nhà trung tâm tổ chức hội nghị ở Qatar (Qatar National Convention Center).

Để 𝐬𝐮̛̉ 𝐝𝐮̣𝐧𝐠 𝐯𝐚̀ 𝐩𝐡𝐚́𝐭 𝐭𝐫𝐢𝐞̂̉𝐧 𝐜𝐨̂𝐧𝐠 𝐜𝐮̣ 𝐓𝐎 𝐭𝐡𝐢̀ 𝐜𝐚̂̀𝐧 𝐤𝐢𝐞̂́𝐧 𝐭𝐡𝐮̛́𝐜 𝐠𝐢̀?

Kiến thức cần để sử dụng và phát triển công cụ TO là kiến thức về tối ưu hóa, phương pháp phần tử hữu hạn, chuyên môn ở lĩnh vực mà bạn muốn áp dụng TO và ngoại ngữ (hiện tại tài liệu đa số là bằng tiếng Anh, tài liệu tiếng Việt về TO rất ít).

𝐃𝐮̀𝐧𝐠 𝐌𝐀𝐓𝐋𝐀𝐁 𝐜𝐨́ 𝐭𝐡𝐞̂̉ 𝐩𝐡𝐚́𝐭 𝐭𝐫𝐢𝐞̂̉𝐧 𝐜𝐨̂𝐧𝐠 𝐜𝐮̣ 𝐓𝐎 đ𝐮̛𝐨̛̣𝐜 𝐤𝐡𝐨̂𝐧𝐠?

Hoàn toàn được. Hiện tại có rất nhiều code viết bằng nhiều ngôn ngữ khác nhau (nhiều nhất là Matlab và Python vì tiện lợi) được chia sẻ mở (miễn phí) để người mới dễ dàng tiếp cận, nắm bắt và tiếp tục phát triển

15/03/2021

Vấn đề mô phỏng hiện tượng truyền nhiệt trong vật rắn khi có nguồn nhiệt di chuyển có ý nghĩa quan trọng trong khảo sát quá trình hàn. Thông tin về sự phân bố nhiệt độ là cơ sở để tiếp tục phân tích về ứng suất dư.
Ở ví dụ này, để đơn giản hóa bài toán, ta khảo sát trường hợp nguồn nhiệt điểm với các giả thiết sau:
+ Các thông số vật liệu không phụ thuộc vào nhiệt độ (trong thực tế, các thông số vật liệu có thể thay đổi theo nhiệt độ. Khi đó bài toán trở thành bài toán phi tuyến).
+ Nguồn nhiệt di chuyển theo quỹ đạo đường thẳng với tốc độ không đổi.
Với các giả thiết trên, ta có bài toán tuyến tính theo mô hình Rosenthal [1] và dễ dàng giải quyết bằng phương pháp phần tử hữu hạn (FEM)

Tham khảo:
[1] D. Rosenthal (1941). Mathematical theory of heat distribution in welding and cutting. Welding Journal 20 (5), pp. 220-234.

09/02/2021

Một số link download code giải thuật tìm kiếm:
- Genetic Algorithm (GA) :https://www.mathworks.com/matlabcentral/fileexchange/67435-the-genetic-algorithm-ga-selection-crossover-mutation-elitism
- Different Evolution (DE): https://www.mathworks.com/matlabcentral/fileexchange/52897-differential-evolution-de
- Particle Swarm Optimization (PSO): https://www.mathworks.com/matlabcentral/fileexchange/52857-particle-swarm-optimization-pso
- Ant Colony Optimization (ACO): https://www.mathworks.com/matlabcentral/fileexchange/69028-ant-colony-optimiztion-aco
- Jellyfish Search Optimization (JSO): https://www.mathworks.com/matlabcentral/fileexchange/78961-jellyfish-search-optimizer-js..
Điều quan trọng nhất trong giải quyết bài toán tối ưu là mô tả bài toán: tức là dựa trên nhu cầu và điều kiện thực tế để quyết định số lượng biến thiết kế, xác định hàm mục tiêu và các ràng buộc. Sau đó mới là chọn phương pháp phù hợp.

21/01/2021



MỘT SỐ KỸ THUẬT THƯỜNG DÙNG TRONG GIẢI THUẬT TÌM KIẾM

Hiện nay, các giải thuật tìm kiếm dùng trong tối ưu hóa tham số rất đa dạng về số lượng và hình thức.

Nhìn chung, đối với các thuật toán tìm kiếm theo mô hình quần thể (population-based algorithms), ta sẽ duy trì N cá thể và thực hiện tìm kiếm qua M vòng. Qua mỗi vòng, các cá thể (tức là các bộ nghiệm khả dĩ cho bài toán) sẽ được cập nhật sao cho giá trị hàm mục tiêu sẽ có xu hướng giảm dần (đối với bài toán tối thiểu hóa – hoặc ngược lại, đối với bài toán tối đa hóa thì giá trị hàm mục tiêu có xu hướng tăng dần). Có hai tác vụ chính: tìm kiếm cục bộ (local search) và tìm kiếm toàn cục (global search). Hai tác vụ này cần được thực hiện nhịp nhàng. Tìm kiếm cục bộ tốt sẽ giúp nhanh chóng tiến gần đến cực trị. Tìm kiếm toàn cục tốt sẽ giúp thuật toán nâng cao khả năng tránh được trường hợp rơi vào cực trị địa phương.
Bài viết này không nhằm đi sâu vào một giải thuật cụ thể nào mà chỉ giới thiệu một số kỹ thuật thường được dùng trong các giải thuật tìm kiếm.

1. Khai thác lời giải tốt nhất đang có
Rất nhiều giải thuật sử dụng kỹ thuật này như Particle Swarm Algorithm (PSO) [1], Gravitational Search Algorithm (GSA) [2], Black Hole Algorithm (BHO) [3], Jaya Algorithm (JA) [4], Grey Wolf Optimization (GWO) [5], Salp Swarm Algorithm (SSA) [6], Jellyfish Search (JS) [7], v.v… Việc cập nhật các cá thể dựa trên lời giải tốt nhất đang có cho phép nhanh chóng tiến tới cực trị. Tuy nhiên điều này đồng thời làm giảm sự đa dạng trong quần thể. Việc tụ lại quanh một khu vực hẹp trong không gian tìm kiếm cũng có nghĩa là dễ rơi vào cực trị địa phương. Do đó khi sử dụng kỹ thuật này, thường sẽ phải kèm thêm một xác suất cho phép cá thể thay vì tiến tới một vị trí xung quanh lời giải tốt nhất thì sẽ chọn đi ra xa để tiếp cận khu vực khác trong không gian tìm kiếm.

2. Elitism
Chỉ những cá thể tốt nhất mới được giữ lại qua thế hệ (vòng) tiếp theo. Việc này nhằm đảm bảo rằng quần thể ở vòng sau nói chung sẽ “tốt” hơn quần thể ở vòng trước. Kỹ thuật này đã được giới thiệu trong thuật toán di truyền cổ điển (Genetic Algorithm – GA) [8] và vẫn tiếp tục được sử dụng để cải thiện khả năng tìm kiếm của các giải thuật mới hiện nay.

3. Opposition-based learning
Đây là một kỹ thuật trong machine learning và được mượn vào các giải thuật tìm kiếm. Có thể hình dung đơn giản trên không gian một chiều (đoạn thẳng) như sau: nếu điểm X đang xét ở xa vị trí cần tìm thì điểm X’ đối xứng của X qua trung điểm của đoạn thẳng sẽ nằm gần vị trí cần tìm hơn. Phát triển ý tưởng từ không gian môt chiều sang không gian đa chiều sẽ phức tạp hơn rất nhiều. Bạn có thể tìm đọc thêm ở các tài liệu [9, 10].
Trên đây là một số kỹ thuật thường thấy trong các giải thuật tìm kiếm. Trong các tài liệu có thể trình bày thêm những kỹ thuật khác. Một giải thuật tìm kiếm có thể sử dụng một kiểu biến thể của một/một vài kỹ thuật, không nhất thiết sử dụng tất cả các kỹ thuật.

Tài liệu tham khảo
[1] J. Kennedy, R. Eberhart (1995). Particle Swarm Optimization. IEEE conferences. DOI: 10.1109/ICNN.1995.488968
[2] E. Rashedi, H. Nezamabadi-pour, S. Saryazdi (2009). GSA: A Gravitational Search Algorithm. Information Sciences 179 (13): 2232-2248.
[3] A. Hatamlou (2013). Black hole: a new heuristic optimization approach for data clustering. Information Sciences 222: 175-184.
[4] R. V. Rao (2016). Jaya: A simple and new optimization algorithm for solving constrained and unconstrained optimization problems. International Journal of Industrial Engineering Computations 7 (1):19-34.
[5] S. Mirjalili, S. M. Mirjalili, A. Lewis (2014). Grey Wolf Optimizer. Advances in Engineering Software 69: 46-61.
[6] S. Mirjalili, A. H. Gandomi, S. Z. Mirjalili, S. Saremi, H. Farris, S. M. Mirjalili (2017). Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems. Advances in Engineering Software 114: 163-191
[7] J.-S. Chou, D.-N. Truong (2021). A novel metaheuristic optimizer inspired by behavior of jellyfish in ocean. Applied Mathematics and Computation 389: 125535
[8] M. Mitchell (1996). An Introduction to Genetic Algorithms. Cambridge, MA: MIT Press. ISBN 9780585030944.
[9] S. Mahdavi, S. Rahnamayan, K. Deb (2018). Opposition based learning: A literature review. Swarm and Evolutionary Computation 39: 1-23.
[10] S. Dhargupta, M. Ghosh, S. Mirjalili, R. Sarkar (2020). Selective Opposition based Grey Wolf Optimization 151: 113389

Address

Ho Chi Minh City

Website

Alerts

Be the first to know and let us send you an email when Tính toán mô phỏng với Matlab posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Share