首页 > 解决方案 > gui中的Matlab多个子图

问题描述

我目前正在Matlab Gui中进行多元回归。我有一个名为A的变量和一个名为X的矩阵,它有很多列,表示为 X1,X2,...Xn。我想制作一个在A和每个X列之间有子图(每行 2 个)的图。问题是当用户插入他的X矩阵时,这些列可能是 1 ,2 或 10。我想我必须为 X 做一个 for 循环。这在子图中是否可能?我在想类似的事情。有人可以帮我让它工作吗?

     cols = size(X,2);
figure;
for i = 1:cols
    subplot(ceil(cols/2),2,i)
    scatter(A,X(i,:));
end

我想要的输出必须在 Y ax 中带有向量 A的子图,矩阵 XIe 的每一列如果 X 有 5 列,我想要一个带有 5 个子图的图形。

标签: matlabfor-loopmatlab-figurematlab-guidematlab-compiler

解决方案


是的你可以。下面是一个演示。

subplot引用:

subplot(m,n,p) 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。

因此,您a应该是总列数除以 2。但是,这可能会导致奇数列的非整数。您将需要用 包装商ceil

randomColNum = randi([1,10]);
randomRowNum = randi([10,20]);
A = rand(1,randomRowNum ); % make a random vector to imitate matrix A.
X = rand(randomRowNum, randomColNum ); % make a random matrix to imitate user input X.
cols = size(X,2);
figure;
for i = 1:cols
    subplot(ceil(cols/2),2,i)
    scatter(X(:,i), A);
end

推荐阅读