使用循环创建子图

4

我有以下问题,请帮忙解决下面的任务:

我想在Matlab中创建子图,其依赖于循环变量。例如,我知道要创建2x2的绘图菜单,我们需要像这样操作:

subplot(2,2,1)

subplot(2,2,2)

subplot(2,2,3)

subplot(2,2,4)

但是我可以使用线性计算吗?比如1:100?或者更一般的形式。

n=100;

for i=1:n

subplot(1,n,i)

?

thanks very much

EDITED CODE

function [order]=find_order(y,fs);
order=0;
n=length(y);
n1=nextpow2(n);
ndft=2^n1;
for i=1:floor(n/2)
    [Pxx,f]=pburg(y,i,ndft,fs);
    subplot(ndft,ndft,i);
    plot(f,Pxx);
    title(['order',num2str(i),'i']);
    order=i;    
end
end


   picture :

这里输入图片描述

我不明白发生了什么。


你到底想要实现什么目标? - Drake
不,我只是想看看是否可能。 - user466534
不,只是一些混乱的图片,就像我这种情况。 - user466534
也许有这样的解决方案,将所有这些图片保存在一个Word文档中,我该怎么做呢?还是接受旧问题的答案并发布新问题更好呢? - user466534
建议1:尝试使用小的 y,例如 46。目的是保持子图数量较少。 建议2:尝试使用 subplot(floor(n/2),1,i); 建议3:在子图正常工作之前,删除 title(['order',num2str(i),'i']); - Divakar
显示剩余10条评论
3个回答

2

1-D演示

代码

%%// Data
t = 0:0.01:15*pi;
y1 = sin(t);

%%// Plot
figure,
for k=1:4
    subplot(4,1,k)
    plot(t((k-1)*1000+1:k*1000),y1((k-1)*1000+1:k*1000))
    xlim([0 40])
end

输出

在此输入图片描述

2D演示

代码

%%// Data
t = 0:0.01:15*pi;
y1 = sin(t);

%%// Plot
colors=['r' 'g' ; 'y' 'k'];

figure,
for k1=1:2
    for k2=1:2
        subplot(2,2,(k1-1)*2+k2)
        plot(t,y1,colors(k1,k2));
    end
end

输出

enter image description here

希望这些演示能为您的情况提供有意义的指导。


当尺寸很大且无法容纳所有图片时,我该怎么办? - user466534
当然,让我们来看看! - Divakar

1
是的,它是:
n=5;

for i=1:n

subplot(1,n,i)

end

提供

enter image description here


1

对于pat=1:N % 主循环

% Define the sublot grid
s1=3; % subplot rows
s2=3; % subplot columns

% find the figure number
fig_num=floor(pat/(s1*s2))+1 % Figure number

% Find the subplot number
sub_fig=mod(pat,s1*s2)   % subplot number

% correct for corners
if(sub_fig==0)
    sub_fig=s1*s2;
    fig_num=fig_num-1;
end

% plot something
figure(fig_num);
subplot(s1,s2,sub_fig) ;

plot(1,1) % plot something

主循环结束的 %


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接