声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1070|回复: 5

[编程技巧] 怎样用M文件编正弦信号发生器?

[复制链接]
发表于 2008-5-3 23:03 | 显示全部楼层 |阅读模式

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

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

x
哪位朋友知道怎样用.M文件编正弦信号发生器?

我想编一个连续产生正弦波信号的发生器。

希望长度为20MHz。

[ 本帖最后由 eight 于 2008-5-4 21:28 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-5-4 08:43 | 显示全部楼层

回复 楼主 的帖子

y=sin(wt)?

评分

1

查看全部评分

 楼主| 发表于 2008-5-4 21:48 | 显示全部楼层
发表于 2008-5-4 21:56 | 显示全部楼层

回复 3楼 的帖子

频率

这是正弦函数的基本表达式
 楼主| 发表于 2008-5-4 23:28 | 显示全部楼层

回复 4楼 的帖子

你好,我的工作是,建立一个信道模型(已经建立),再给一个输入信号,将这个信号和这个模型(即传输函数)进行卷积,最后得到一个输出信号。

我在编程时,发现仿真输出结果不太对。所以在想是不是输入信号不对,是不是应该要连续的正弦信号。

我的输入信号程序如下:
echo on
t0=.2;
ts=0.001;
fs=1/ts;
df=0.3;
t=[-t0/2:ts:t0/2];
m=sinc(100*t);
[M,m,df1]=fftseq(m,ts,df);
M=M/fs;
f=[0:df1:df1*(length(m)-1)]-fs/2;
subplot(2,1,1)
plot(t,m(1:length(t)))
xlabel('Time')
title('The message signal')
pause
subplot(2,1,2)
plot(f,abs(fftshift(M)))
xlabel('Frequency')
title('Spectrum of the message signal')

我的信道模型程序:
echo on
t0=2.*10.^7;
ts=4.*10.^6;
f=[0:ts:t0];
m=0.64.*exp(-1.56.*(10.^(-7)).*f).*exp(-2.66.*j.*pi.*f)+0.38.*exp(-1.73.*(10.^(-7)).*f).*exp(-2.97.*j.*pi.*f)-0.15.*exp(-1.9.*(10.^(-7)).*f).*exp(-3.26.*j.*pi.*f)+0.05.*exp(-2.09.*(10.^(-7)).*f).*exp(-3.57.*j.*pi.*f);
absm=abs(m);
s=20.*log(absm);
plot(f,s)
grid;
xlabel('Frequency')
title('The Discrete Magnitude  Spectrum')

我的卷积程序:
echo on
t0=.2;
ts=0.001;
f=[0:5000:2.*10.^7];
fs=1/ts;
df=0.3;
t=[-t0/2:ts:t0/2];
m=sinc(100*t);
[M,m,df1]=fftseq(m,ts,df);
f=[0:df1:df1*(length(m)-1)]-fs/2;
H=0.64.*exp(-1.56.*(10.^(-7)).*f).*exp(-2.66.*j.*pi.*f)+0.38.*exp(-1.73.*(10.^(-7)).*f).*exp(-2.97.*j.*pi.*f)-0.15.*exp(-1.9.*(10.^(-7)).*f).*exp(-3.26.*j.*pi.*f)+0.05.*exp(-2.09.*(10.^(-7)).*f).*exp(-3.57.*j.*pi.*f);
S=20.*log(H);
Y=M.*S;
y=ifft(Y);
plot(f,Y)
grid;
xlabel('Frequency')
title('输出信号的频谱图')
pause
plot(t,abs(y(1:length(t))));
grid;
xlabel('signal')
title('输出信号时域图')
发表于 2008-5-5 08:24 | 显示全部楼层
原帖由 lise2001 于 2008-5-4 23:28 发表
你好,我的工作是,建立一个信道模型(已经建立),再给一个输入信号,将这个信号和这个模型(即传输函数)进行卷积,最后得到一个输出信号。

我在编程时,发现仿真输出结果不太对。所以在想是不是输入信号不对, ...


这种问题让别人很难回答,因为毕竟大家的背景知识相差很大,而且你的研究内容别人肯定不如你清楚。所以,说到结果不对,我想别人就很难帮你了。首先,确认原理、方法没问题;其次,在程序中设置断点,逐段跟踪调试,直到找到出问题的部分。具体的工作我想别人是替不了你的,毕竟你的工作你最熟悉了。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-23 11:25 , Processed in 0.055344 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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