matlab怎样画出方波的频谱图?

就是那种若干条代表基波和各次谐波幅值的直线段。我用以下代码,画出的频谱是幅值逐渐减小的尖脉冲形状,不是直线呀!f0=1;t=0:.0001:5;w0=2*pi*f0;y=... 就是那种若干条代表基波和各次谐波幅值的直线段。
我用以下代码,画出的频谱是幅值逐渐减小的尖脉冲形状,不是直线呀!
f0=1;
t = 0:.0001:5;
w0=2*pi*f0;
y = square(w0*t, 50);
fy=fft(y);
subplot(211)
plot(t,y); axis([0,5,-1.5,1.5]);
subplot(212)
f=1:100;
plot(f,abs(fy(1:100)))

如果把fy=fft(y);换成fy=fourier(y);
就提示没有fourier函数,是不是我的matlab缺东西,或者应该在程序前加include?
展开
 我来答
生活知识小超人
高粉答主

2020-05-22 · 醉心答题,欢迎关注
知道答主
回答量:2078
采纳率:50%
帮助的人:88.9万
展开全部

1、首先在电脑中打开MATLAB软件,输入simulink启动仿真,如下图所示。

2、然后输入zero添加采样器,如下图所示。

3、然后输入sin添加正弦波,如下图所示。

4、接着输入scope添加示波器,如下图所示。

5、然后连接模块,双击各个模块,设置参数。

6、最后运行模块,正弦波成为方波,如下图所示就完成了。

wucong2008
推荐于2017-10-05
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
Matlab里是有fourier函数的,不过是对一个函数进行傅氏变换。
如下例:
ft=sym('(t+4)/2*Heaviside(t+4)-t*Heaviside(t)+(t-4)/2*Heaviside(t-4)');
Fw=simplify(fourier(ft));
Ff=subs(Fw, '2*pi*f', 'w');
Ff_conj=conj(Ff);
GF=sqrt(Ff*Ff_conj);
ezplot(GF,[-0.5 0.5]);grid;

这个例子也是我在网上找到的,可以作为参考。

如果用离散变换可能要设采样点什么的,搜索一下matlab频谱分析可能会找到一些实例。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
joserrio
2008-10-03 · TA获得超过115个赞
知道答主
回答量:127
采纳率:0%
帮助的人:91.8万
展开全部
只有快速的fft,没有傅立叶变换,因为matlab上本身就是离散点。
不存在直线的冲击函数~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
meibiny
2020-12-01 · 超过30用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:23.5万
展开全部

你采样点够多,但是最后一行显示时为啥只取1:100,如果取1:1000的话,看起来就是线了,实际上用plot画出的图都是折线,只是你点数取少了看起来就明显。

或者,t = 0:.001:50;范围取大,采样点取少一些,频谱图稀疏一点,更好看一些

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式