24小时热门版块排行榜    

查看: 1247  |  回复: 8

gnehsijux

新虫 (小有名气)

[求助] 图片自动播放时为什么会越来越小 已有1人参与

用该程序处理数据,图可以自动播放,一开始图片大小还正常,但是越往后越小。关掉figure,重新打开图片大小会恢复一点,但很快又变小了。请问这是怎么回事啊?所用matlab版本为2013a

程序代码如下。该程序是一系列程序中的中间部分。
function Compare2Models(data,fA,fB)

eval(['ModelA=','data.Model',int2str(fA)]);
eval(['ModelB=','data.Model',int2str(fB)]);

MA =nmodel(ModelA);   
EA=data.X-MA;
MA=data.X-EA;

MB =nmodel(ModelB);   
EB=data.X-MB;
MB=data.X-EB;


figure;
for i=(1:1data.nSample)), pause(0.2)  
subplot(3,3,2),
contourf(data.Ex,data.Em,(squeeze(data.X(i,:,))), colorbar   
title(['Measured (' num2str(i) ')']),
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,4),
contourf(data.Ex,data.Em,(squeeze(MA(i,:,))), colorbar
title(([num2str(fA) ' component model']))
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,7),
contourf(data.Ex,data.Em,(squeeze(EA(i,:,))), colorbar
title('Residuals')
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,6),
contourf(data.Ex,data.Em,(squeeze(MB(i,:,))), colorbar
title(([num2str(fB) ' component model' ]))
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,9),
contourf(data.Ex,data.Em,(squeeze(EB(i,:,))), colorbar
title('Residuals')
xlabel('Ex. (nm)')
ylabel('Em. (nm)')

end

图片自动播放时为什么会越来越小
正常图片.jpg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gnehsijux

新虫 (小有名气)

我去!好智能,将:和)的组合体直接变成了微笑的图像。再发一次代码
function Compare2Models(data,fA,fB)

eval(['ModelA=','data.Model',int2str(fA)]);
eval(['ModelB=','data.Model',int2str(fB)]);

MA =nmodel(ModelA);   
EA=data.X-MA;
MA=data.X-EA;

MB =nmodel(ModelB);   
EB=data.X-MB;
MB=data.X-EB;


figure;
for i=(1:1: (data.nSample)), pause(0.2)  
subplot(3,3,2),
contourf(data.Ex,data.Em,(squeeze(data.X(i,:,: )))), colorbar   
title(['Measured (' num2str(i) ')']),
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,4),
contourf(data.Ex,data.Em,(squeeze(MA(i,:,: )))), colorbar
title(([num2str(fA) ' component model']))
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,7),
contourf(data.Ex,data.Em,(squeeze(EA(i,:,: )))), colorbar
title('Residuals')
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,6),
contourf(data.Ex,data.Em,(squeeze(MB(i,:,: )))), colorbar
title(([num2str(fB) ' component model' ]))
xlabel('Ex. (nm)')
ylabel('Em. (nm)')
subplot(3,3,9),
contourf(data.Ex,data.Em,(squeeze(EB(i,:,: )))), colorbar
title('Residuals')
xlabel('Ex. (nm)')
ylabel('Em. (nm)')

end
2楼2014-06-18 10:17:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
gnehsijux: 金币+30, ★★★很有帮助 2014-06-20 17:05:17
仅仅在这个函数里面是没有问题的,不会变小;
不知道你图片变小是什么意思,要排查的话就要看看你整个包的程序了,可能其他程序中有一些设置使图片发生变化;
What would Jesus do?
3楼2014-06-18 13:41:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gnehsijux

新虫 (小有名气)

引用回帖:
3楼: Originally posted by dnp at 2014-06-18 13:41:18
仅仅在这个函数里面是没有问题的,不会变小;
不知道你图片变小是什么意思,要排查的话就要看看你整个包的程序了,可能其他程序中有一些设置使图片发生变化;

图片变小就相当于附件中的每个图(附件中是有5个图)都按比例缩小了,每次按键盘上的键后都会出现一张类似于附件中的图,一共有好多张这种图,越到后面图就越小,最后都变成小点了。不知道怎么回事。
如果真是其它程序中的设置问题,那就麻烦了,程序太多。
4楼2014-06-19 08:46:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

引用回帖:
4楼: Originally posted by gnehsijux at 2014-06-19 08:46:04
图片变小就相当于附件中的每个图(附件中是有5个图)都按比例缩小了,每次按键盘上的键后都会出现一张类似于附件中的图,一共有好多张这种图,越到后面图就越小,最后都变成小点了。不知道怎么回事。
如果真是其它 ...

我用这个类似的运行了一下,你可以观察到图片其实没有变化:
CODE:
for ff = 1:3
    figure;
    for ii = 1:20
        b = rand(20,1);
        subplot(3,3,1);
        plot(b);
        b = rand(20,1);
        subplot(3,3,3);
        plot(b);
        b = rand(20,1);
        subplot(3,3,5);
        plot(b);
        b = rand(20,1);
        subplot(3,3,7);
        plot(b);
        b = rand(20,1);
        subplot(3,3,9);
        plot(b);
        pause(0.2);
    end
end

出很多图片是因为你在每次画图之前都用了figure命令;
所以估计你需要检查的是:
1. 在其他函数里面是否有关于图片的一些设置;
2. 检查一下你的数据,每次循环得到的用于画图的数据(这里应该是data吧)是否改变,以至于在画图的时候用的那个画图命令会使图片改变了(我猜数据变化只会改变坐标而不会改变图片大小);
你可以把画图的那一部分按照我给的代码运行3次,就会得到3个figure,你可以观察是否会变化,如果变了,那就是这里的问题,如果没变,那估计就是程序中其它地方对图片进行设置了~~
What would Jesus do?
5楼2014-06-19 11:27:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gnehsijux

新虫 (小有名气)

引用回帖:
5楼: Originally posted by dnp at 2014-06-19 11:27:23
我用这个类似的运行了一下,你可以观察到图片其实没有变化:

for ff = 1:3
    figure;
    for ii = 1:20
        b = rand(20,1);
        subplot(3,3,1);
        plot(b);
        b = rand(20,1);
...

我按照你的代码运行,确实没有变小。如果你所说的正确的话,应该是有其它程序设置了图片。运行时,我将你的代码pause(0.2)移到了for ff = 1:3之后,跟我的原始代码的区别是你的代码生成了三个figure框即figure1 figure2 figure3,而我的是所有的图都在同一个figure框里动态显示,只有figure1.不知这一点是如何办到的?
其它程序太多,本人初学,恐怕一时很难查出来了。不过还是很感谢你。
6楼2014-06-20 11:41:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

引用回帖:
6楼: Originally posted by gnehsijux at 2014-06-20 11:41:43
我按照你的代码运行,确实没有变小。如果你所说的正确的话,应该是有其它程序设置了图片。运行时,我将你的代码pause(0.2)移到了for ff = 1:3之后,跟我的原始代码的区别是你的代码生成了三个figure框即figure1 fi ...

你这里说所有的图都在同一个figure框里动态显示;可是之前你提到
引用回帖:
图片变小就相当于附件中的每个图(附件中是有5个图)都按比例缩小了,每次按键盘上的键后都会出现一张类似于附件中的图,一共有好多张这种图,越到后面图就越小,最后都变成小点了。不知道怎么回事。

这两者之间是怎么回事?
What would Jesus do?
7楼2014-06-20 11:45:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gnehsijux

新虫 (小有名气)

引用回帖:
7楼: Originally posted by dnp at 2014-06-20 11:45:24
你这里说所有的图都在同一个figure框里动态显示;可是之前你提到这两者之间是怎么回事?...

不好意思,这个是我弄错了。你第二个提到的“每次按键盘上的键后都会出现一张类似于附件中的图”是另外一个程序出现的问题,需要按键盘上的键才会出现图,是独立的图。现在黏贴的这个程序是自动出图。我把那个程序和现在这个程序给搞混了。
8楼2014-06-20 11:52:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

引用回帖:
8楼: Originally posted by gnehsijux at 2014-06-20 11:52:51
不好意思,这个是我弄错了。你第二个提到的“每次按键盘上的键后都会出现一张类似于附件中的图”是另外一个程序出现的问题,需要按键盘上的键才会出现图,是独立的图。现在黏贴的这个程序是自动出图。我把那个程序 ...

如果这样的话可能是其他的程序或者这个程序的后面在运行完这个程序的时候运行了close或者clf等清除或关闭图片的命令;
你可以在那些调用这个函数的程序中找是否存在设置图片的代码~~
可以以以下方式排查:
用matlab的debug功能,具体可以网上搜;
运行你贴出来的代码(不要运行函数,直接在这个函数里面运行代码),看图片是否发生变化;
然后跳出来,运行调用这个函数的那一部分代码,看图片是否发生变化,然后寻找调用这个函数附近是否有命令设置了图片等;
What would Jesus do?
9楼2014-06-20 12:39:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gnehsijux 的主题更新
信息提示
请填处理意见