weilinmar 发表于 2006-8-20 08:40

如何使画图的m文件具有plot的和hold on,hold off连用的功能

我想把两个画图的m文件画出的图都在一个图形中表现(代码:huatu1(2,3,4),hold on,huatu2((3,4,5),hold off),如plot和hold on ,off连用的效果.请问如何修改m文件,或在上述图形中修改

[ 本帖最后由 eight 于 2007-3-3 14:28 编辑 ]

weilinmar 发表于 2006-8-20 10:00

求助阿,那位高手帮下忙!!!!

happy 发表于 2006-8-20 13:52

请把问题说明清楚

huatu1最好能够给出代码

weilinmar 发表于 2006-8-20 20:04

function huatu(a,b,c)
t=a:0.01:b;
y=sin(t);
switchc
    case 1
      plot(t,y,'r');
    case 2
      plot(t,y,'b');
end

weilinmar 发表于 2006-8-20 20:11

huatu1和huatu2里的内容类似huatu的代码,如果运行: huatu(1,4,2),hold on,huatu(1,5,1),hold off   只会显示后面一个m文件画图形,我就是想问如何使这两个m文件的图形都画出
拜托!!!!!!

guangdang 发表于 2006-8-21 10:21

每次Plot前把hold on 改为picture不知能否?!

weilinmar 发表于 2006-8-21 10:58

picture; huatu(1,4,2),;picture;huatu(1,5,1),这样吗?
运行后,说picture没定义

happy 发表于 2006-8-23 21:46

两个function中,句柄是不一样的,这样是实现不了的

bainhome 发表于 2006-8-24 01:38

如果硬要画,可以用如下代码:
function huatu(a,b,c)
clc
t=a:0.01:b;
y=sin(t);
switchc
    case 1
      if isempty(get(gcf,'currentaxes'))
            hFig=plot(t,y,'r');
      else
            hOld=get(gca,'children');
            hOldFig=get(get(hOld,'parent'),'parent');
            figure;
            plot(t,y,'r');
            hNew=gca;
            copyobj(hOld,hNew)
            close(hOldFig)
      end
    case 2
      if isempty(get(gcf,'currentaxes'))
            hFig=plot(t,y,'b');
      else
            hOld=get(gca,'children');
            hOldFig=get(get(hOld,'parent'),'parent');
            figure;
            plot(t,y,'b');
            hNew=gca;
            copyobj(hOld,hNew)
            close(hOldFig)
      end
end
command windows中运行:
huatu(1,2,1)
huatu(2,3,2)
不过恕我直言,你解决这个问题的思路实在是原始得到了家,这样的问题有save/load两个命令,把多次case中的数据加叠存储起来,一次性画,可以不涉及对句柄的复杂操作,而只是数据变量在变动,不比你这样安全和简单?!
页: [1]
查看完整版本: 如何使画图的m文件具有plot的和hold on,hold off连用的功能