声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3325|回复: 25

[综合讨论] 间断的正弦波怎么画?

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

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

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

x
例如:

第一秒发送一个余弦波,第二秒无信号,也就是一条直线,
第三秒是一个有60度初相的正弦波,第四秒又无信号,是一条直线,
等等。

但要求这些点都要连在一起。

例如上面第二秒与第三秒的衔接点处,应该有一个跳变,这样就会有丰富的谐波分量,然后我用贝塞尔滤波器滤波。分析结果。

高手们,求助。!

[ 本帖最后由 rockzone 于 2007-10-15 19:26 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-10-15 19:30 | 显示全部楼层
有些像通信系统的PSF波形,找本书看看

[ 本帖最后由 花如月 于 2007-10-15 19:32 编辑 ]
 楼主| 发表于 2007-10-15 19:49 | 显示全部楼层
PSF波我不懂。我只是想做出这样的波形。

其实这样的波,就是,我隔了一段时间发一个相位变化的正弦波。

对于模拟量来说,肯定会有跳变沿,这样造成很多谐波分量。

matlab能不能做这样的波?
发表于 2007-10-15 19:58 | 显示全部楼层
你这个应该类似于分段函数了,以前没有做过,下面这个例子做做参考吧

%    |x-b    when x>b
% y= | x     when -b<x<b
%    |x+b    when x<-b
clc;
b=1;
fx=inline('(x>b)*(x-b)+(x<-b)*(x+b)+(-b<x&x<b)*x)','x','b')

评分

1

查看全部评分

 楼主| 发表于 2007-10-15 20:08 | 显示全部楼层

3Q

我研究研究,

但还需要高手指点
 楼主| 发表于 2007-10-15 20:15 | 显示全部楼层

q

t1=0:0.001:1;
t2=1:0.001:2;

y=cos(2 * pi * 10 * t1);
hold on
x=sin(2 * pi * 0 * t2);

plot(t1,y),plot(t2,x);

这是个例子,大家看看怎么把余弦波的最后一点与后面的线段连上??

这应该是一个连续过程。
发表于 2007-10-15 20:36 | 显示全部楼层
从你的图中看来,y的最后一点值和x第一点值完全不同,肯定是一个不连续过程了,如果一定要将它们连接起来的话,需要在时间上做做功夫,使得y(end)=x(1),确定好这个时间即可!
发表于 2007-10-15 20:54 | 显示全部楼层
如果是周期信号呢?这种方法可行性不高,治标不治本。看到问题第一眼我就觉得用分段函数,后来想想会有问题。还是用仿真来得方便,有点类似通信系统的相移键控方式。

如果仅仅是为了研究谐波,直接对方波信号分析也可以呀。方波信号的谐波是最丰富的:lol

[ 本帖最后由 花如月 于 2007-10-15 20:59 编辑 ]
发表于 2007-10-15 21:02 | 显示全部楼层

回复 #6 rockzone 的帖子

把t1,t2放在一个向量,y和x放在一个向量里就行了。楼主要的就是一个分段函数那么简单吧,不连续反倒是楼主所希望的吧,正如楼主所说那样谐波分量更丰富
发表于 2007-10-15 21:15 | 显示全部楼层
我编了一个程序,看看能否满足楼主的要求:
t=0:0.001:4;
f0=10;
x=cos(2*pi*f0*t).*(t<=1)+sin(2*pi*f0*t+2*pi/6).*(t>=2 & t<=3);
plot(t,x)
图为
brockensine.jpg

评分

1

查看全部评分

 楼主| 发表于 2007-10-15 21:21 | 显示全部楼层
就是这个意思!!!!。
 楼主| 发表于 2007-10-15 21:22 | 显示全部楼层
让我说啥好呢,高手!@!

此帖保留。有问题还得问。

[ 本帖最后由 rockzone 于 2007-10-15 21:49 编辑 ]
发表于 2007-10-15 22:08 | 显示全部楼层

老师这么快就弄出来答案了,先赞一个。不过老师的方法应该不能应用与周期信号
我是想了好长时间的,频率根据需要调节,信号是周期的,长度也可以任选。误差也只是在最后的1/4方波周期
  1. clear,clc;
  2. f=50;%定义频率
  3. t=0:.0001:.2;
  4. s=square(2*pi*f*t/4,25);
  5. s(find(s<=0))=0;
  6. s1=square(2*pi*f*t/4,75);
  7. s1(find(s1<=0))=0;
  8. s1=1-s1;
  9. delt=length(0:.0001:.02);
  10. temp=s1(1:delt);
  11. s1(1:delt)=[];
  12. s1=[s1,temp];
  13. y=cos(2*pi*f*t);
  14. y1=sin(2*pi*f*t+pi/3);
  15. sig=s.*y+s1.*y1;
  16. plot(t,sig)
复制代码
这个思路是按照合成的思路来的。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
回去又想了想,可以按照songzy41 老师的方法先产生一个周期
然后利用序列复制的方法,产生所需要的周期,最后再对时间进行赋值。应该是最简单的,程序比较容易,就不贴了
--------------------------------------------------------------------------------------------------------------------------------------------------------------

[ 本帖最后由 花如月 于 2007-10-16 09:11 编辑 ]
temp.PNG

评分

1

查看全部评分

 楼主| 发表于 2007-10-16 08:54 | 显示全部楼层
多谢花如月

我再好好研究研究~!

[ 本帖最后由 花如月 于 2007-10-16 09:07 编辑 ]
 楼主| 发表于 2007-10-16 11:17 | 显示全部楼层

接着问

N=8;
Wn=50;
[b,a]=besself(N,Wn);
figure(1)
[H,W]=freqs(b,a,512);
magH=abs(H);
phaH=unwrap(angle(H));
subplot(2,1,1),plot(W/(2*pi),10*log10(magH));
grid on;
xlabel('频率/Hz');
ylabel('振幅/dB');
subplot(2,1,2)
plot(W/(2*pi),phaH*180/pi);
grid on
xlabel('频率/Hz');
ylabel('相位/^o');


上面是一个简单的贝塞尔滤波器。
我想做它的幅频特性。

程序写的对吗?

Wn如果是50的话,那么它的截至频率是不是50/(2*pi)=8Hz

也就是在8Hz处幅度衰减3dB.

上面的程序怎么衰减了6.XXdB呢?

我做的幅频和相频特性对吗?

[ 本帖最后由 rockzone 于 2007-10-16 11:20 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-9 07:56 , Processed in 0.098883 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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