声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3847|回复: 17

[绘图技巧] 在一张图内画多条正弦曲线有几种方法??

[复制链接]
发表于 2007-10-24 19:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我只能想到一种:

t=0:.001:1
x1=sin(2*pi*2*t);

hold on;
plot(t,x1);
x2=sin(2*pi*3*t);
plot(t,x2);
x3=sin(2*pi*4*t);
plot(t,x3);

grid on;


能不能将这三个正弦波放到一个表达式中,但是画出的是三个正弦波呢?

除了这些还有别的方法吗?

[ 本帖最后由 eight 于 2007-10-24 19:55 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-10-24 19:55 | 显示全部楼层
原帖由 coolmat 于 2007-10-24 19:27 发表
我只能想到一种,

t=0:.001:1
x1=sin(2*pi*2*t);

hold on;
plot(t,x1);
x2=sin(2*pi*3*t);
plot(t,x2);
x3=sin(2*pi*4*t);
plot(t,x3);

grid on;


能不能将这三个正弦波放到一个表达式中,但 ...


把向量做成矩阵就可以了,不过感觉没有太大的必要
 楼主| 发表于 2007-10-24 20:02 | 显示全部楼层

1111

还是简单点好,就几条语句实现最好
发表于 2007-10-24 20:08 | 显示全部楼层

回复 #1 coolmat 的帖子

t=0:.001:1;a=[sin(2*pi*2*t'),sin(2*pi*3*t'),sin(2*pi*4*t')];plot(a)

评分

1

查看全部评分

发表于 2007-10-25 09:10 | 显示全部楼层
或者用双坐标plotyy,这些都是在一个axis中实现的。用多个axis对象也可以,如subplot等

评分

1

查看全部评分

发表于 2007-10-25 14:18 | 显示全部楼层
采用矩阵方式可以,但是无法单独控制线型和颜色
发表于 2007-10-25 14:45 | 显示全部楼层

回复 #6 VibrationMaster 的帖子

可以用函数句柄控制,不过有些麻烦。
  1. t=0:.001:1;a=[sin(2*pi*2*t'),sin(2*pi*3*t'),sin(2*pi*4*t')];
  2. plot(a);hl=get(gca);hd=hl.Children;
  3. set(hd(1),'color',[1 0.2 0],'LineStyle','*','linewidth',2.0);
  4. set(hd(1),'color',[1 0 1],'LineStyle',':','linewidth',2.5);
  5. set(hd(1),'color',[0.5 0.8 1],'LineStyle','--','linewidth',3.0);
复制代码

这样做会简洁些
  1. t=0:.001:1;a=[sin(2*pi*2*t'),sin(2*pi*3*t'),sin(2*pi*4*t')];
  2. plot(t,a(:,1),'r.',t,a(:,2),'b:',t,a(:,3),'go')
复制代码

[ 本帖最后由 花如月 于 2007-10-25 14:47 编辑 ]
发表于 2007-10-25 16:09 | 显示全部楼层
谢谢,还是麻烦了点
发表于 2007-10-25 16:29 | 显示全部楼层

回复 #8 VibrationMaster 的帖子

因此,我也赞成2楼的观点。这么做确实没有多大必要,也没有什么实质性的区别
 楼主| 发表于 2007-10-26 11:52 | 显示全部楼层

再问个问题

t=0:.001:2;
x1=sin(2*pi*2*t-pi/6);
x2=sin(2*pi*3*t-pi/4);
x3=sin(2*pi*4*t-pi/3);
plot(t,x1,'color','red')
hold on
plot(t,x2,'color','green')
plot(t,x3)
grid on

下面图可以看出,在0.2秒内有一点三条曲线可以相交,在1.2秒内也有个相交点,这是一秒钟。
我希望画图起点就在第一个相交点,终点在第二个相交点。即这样的1S占满整个图。

我怎么改程序呢,我试验了一段时间一直没有好方法

untitled.jpg
发表于 2007-10-26 12:26 | 显示全部楼层
求交点坐标,然后根据坐标定义区间就行了
发表于 2007-10-26 12:42 | 显示全部楼层
原帖由 coolmat 于 2007-10-26 11:52 发表
t=0:.001:2;
x1=sin(2*pi*2*t-pi/6);
x2=sin(2*pi*3*t-pi/4);
x3=sin(2*pi*4*t-pi/3);
plot(t,x1,'color','red')
hold on
plot(t,x2,'color','green')
plot(t,x3)
grid on

下面图可以看出,在0.2秒内 ...


自己翻翻旧帖吧,记得精华区就有介绍如何求交点
发表于 2007-10-26 15:22 | 显示全部楼层
这种问题自己动下手就可以解决,不过结果并不像肉眼观察的那样。根据方程解出来的,也只有2个交点。因此满足要求的曲线段唯一
temp.PNG
 楼主| 发表于 2007-10-26 20:09 | 显示全部楼层

回复 #13 花如月 的帖子

我要的就是这种效果,麻烦花如月告诉我如何修改我的程序。
还有就是横坐标应该是时间序列,绿色的正弦波,初相和其他两条应该一样。

谢谢了!!:@)
发表于 2007-10-26 20:48 | 显示全部楼层

回复 #14 coolmat 的帖子

plot(t,x,t,y)比较简单吧
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 19:01 , Processed in 0.076587 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表