IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> matlab 编写计算傅里叶系数函数 -> 正文阅读

[数据结构与算法]matlab 编写计算傅里叶系数函数

1. 编写计算傅里叶级数系数的函数

%计算函数 x 的 N 次谐波的傅里叶级数系数,函数的周期为 T0
%数组 X 存放的是傅里叶系数,也就是幅值
%数组 w 存放的是频率
function [X, w]=fourierseries(x, T0, N)
    syms t;%因为传进来的x函数中包含符号 t,所以函数内部也要定义符号变量 t,否则会报错
    for k = 1: N,
        X(k)=int(x*exp(-j*2*pi*(k-1)*t/T0), t, 0, T0)/T0;
        w(k)=(k-1)*2*pi/T0;
    end
end
X(k) = int(x*exp(-j*2*pi*(k-1)*t/T0), t, 0, T0) / T0;

上面的式子为傅里叶公式
X ( k ) = 1 T 0 ? ∫ 0 T 0 x ( t ) ? e ? j ? k ? Ω 0 ? t d t X(k) =\frac{1}{T0}* \int_{0}^{T0}x(t) * e^{-j*k*\Omega_0*t}dt X(k)=T01??0T0?x(t)?e?j?k?Ω0??tdt
其中使用了计算积分的 int 函数,不懂使用的可以看这里 matlab 使用 int函数 求积分

2*pi*(k-1)*/T0

注意上面的意思是 ( k ? 1 ) ? Ω 0 (k-1)*\Omega_0 (k?1)?Ω0? ,因为频率要从 0 开始每次递增 Ω 0 \Omega_0 Ω0?,K 是从 1 开始,所以要 -1。

w(k) = (k-1)*2*pi/T0;

这行代码的意思是 w ( k ) = ( k ? 1 ) ? Ω 0 w(k) = (k-1)*\Omega_0 w(k)=(k?1)?Ω0?,因为频率要从 0 开始每次递增 Ω 0 \Omega_0 Ω0?,K 是从 1 开始,所以要 -1。

下面我们可以使用上面编写好的函数计算函数的N次谐波对应的傅里叶系数和相位

2. 求 y = s i n ( 5 ? t ) y=sin(5*t) y=sin(5?t) 的5次谐波(谐波次数可以任意指定)

clear all;
syms t;
y=sin(5*t); T0 = 2 * pi/5; N=5;
figure(1);
subplot(211);
ezplot(y , [0, 2*pi]);
grid;

[Y1, w1] = fourierseries(y, T0, N);
disp(Y1);
disp(w1);

%fliplr(Y1(2:N))的意思是将Y1数组中第2到N个数字顺序反转
%比如 Y1 数组为 [ 0, -1i/2, 0, 0, 0]
%fliplr(Y1(2:N))) 得到就是 [ 0, 0, 0, -1i/2]
%conj函数是求共轭
%比如对数组 [ 0, 0, 0, -1i/2] 求共轭,得到的就是 [ 0, 0, 0, 1i/2]
Y = [conj(fliplr(Y1(2:N)))  Y1];
w = [-fliplr(w1(2:N))  w1];
disp(Y);
disp(w);

subplot(223);
stem(w, abs(Y));%abs函数是对数组 Y 的每一个元素取绝对值
subplot(224);
stem(w, angle(Y));%angle函数是对数组 Y 的每一个元素求其对应的弧度

%计算函数 x 的 N 次谐波的傅里叶级数系数,函数的周期为 T0
%数组 X 存放的是傅里叶系数,也就是幅值
%数组 w 存放的是频率
function [X, w]=fourierseries(x, T0, N)
    syms t;%因为传进来的x函数中包含符号 t,所以函数内部也要定义符号变量 t,否则会报错
    for k = 1: N,
        X(k)=int(x*exp(-j*2*pi*(k-1)*t/T0), t, 0, T0)/T0;
        w(k)=(k-1)*2*pi/T0;
    end
end

在这里插入图片描述

下面,我们在刚才的函数上面增加 1

3. 求 y = 1 + s i n ( 5 ? t ) y=1+sin(5*t) y=1+sin(5?t) 的5次谐波(谐波次数可以任意指定)

只需在原来的信号函数前面加 1 即可

在这里插入图片描述

4. 求 y = 2 + s i n ( 5 ? t ) y=2+sin(5*t) y=2+sin(5?t) 的5次谐波(谐波次数可以任意指定)

只需在原来的信号函数前面加 2 即可

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-04 00:05:27  更:2022-06-04 00:06:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 1:16:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码