草庐IT

C - 锯齿波的傅里叶变换级数

coder 2024-01-21 原文

我正在构建一个 iOS 合成器,使用 Audio Unit,基本上围绕 this 构建.

我已经支持简单的 ASR 包络,以及正弦波、三角波和方波。

正弦很简单,

 sin(theta) * amplitude

正方形是

 sgn(sin(theta)) * amplitude

现在三角形使用非循环FFT,如下:

((8 / pow(M_PI,2)) * (sin(theta) - sin(3*theta)/9 + sin(5*theta)/25)) * amplitude

但是我搞不懂锯齿波, 我试过 2*(theta - floor(theta) - 0.5) 但它出现别名和失真(不是来自剪裁)。 我现在应该用傅立叶变换级数构建它,但我不知道如何在 C 中实现它。

有什么帮助吗?

最佳答案

您可以像对三角波一样对锯齿波使用截断傅里叶级数,除了在求和中包括偶次谐波项和奇次谐波项,并使用等于每项谐波数的除数而不是这样的平方。

您使用的项越多,级数近似值就越像锯齿波,但它包含的高频内容也越多。

关于C - 锯齿波的傅里叶变换级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981348/

有关C - 锯齿波的傅里叶变换级数的更多相关文章

  1. ruby - 从文件中提取快速傅里叶变换数据 - 2

    我正在构建一个应该在服务器上运行并分析声音文件的工具。我想在Ruby中执行此操作,因为我的所有其他工具也是用Ruby编写的。但我很难找到完成此任务的好方法。我发现的很多例子都是在做可视化和图形化的东西。我只需要FFT数据,仅此而已。我既需要获取音频数据,又需要对其进行FFT。我的最终目标是计算一些东西,例如所有频率(加权幅度)的均值/中值/众数、第25个百分位数和第75个百分位数、BPM,也许还有其他一些好的特性,以便以后能够将相似的声音聚集在一起.首先,我尝试使用ruby-audio和fftw3,但我从未将两者真正结合使用。文档也不好,所以我真的不知道有什么数据被洗牌了。接下来,我尝

  2. 图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标) - 2

    1.变换1.1什么是变换?变换(Transform)是计算机图形学中非常重要的一部分。变换包含模型变换(Modelingtransform)以及视图变换(Viewtransform)。模型变换指的是变换模型(被拍摄物体)的位置,大小和角度;视图变换指的是变换照相机的位置和角度。从相对运动的角度来看,两种变换是可以相互转化的。1.2模型变换1.2.1二维变换缩放变换缩放变换(Scale)中,如果一个图片以原点(0,0)为中心缩放𝑠倍。那么点(𝑥,𝑦)变换后数学形式可以表示为写成矩阵形式为:当然,我们也可以给x轴和y轴不同的缩放倍数𝑠𝑥和𝑠𝑦。在非均匀情况下,缩放变换的矩阵形式为反射变换反射变换(

  3. javascript - CSS 3D变换以制作给定边长的梯形 - 2

    我有一个给定尺寸(比如100x300像素)的元素,它位于高度相同且宽度可变的容器中,我想使用rotateX围绕-webkit-transform-进行转换origin:topcenter;在选择容器的-webkit-perspective时,图像的底线看起来保持在原处,但只会扩展以填充整个容器。哇,这听起来令人困惑。这是一张照片:基本上,我想创建一个上部宽度固定、下部宽度可变的梯形。但是我不能完全弄清楚关系背后的数学......欢迎使用Javascript。以下示例适用于正文宽度为600像素的情况:http://jsfiddle.net/24qrQ/现在的任务是随着body的宽度不断改

  4. 坐标变换与坐标系变换 - 2

            在slam中,经常充斥着坐标变换,坐标系变换等等知识,经常把我们搞得头大。这篇文章稍微记录一些我个人的一些心得体会,给同是困惑的人一些参考。       在我看来,坐标系变换与坐标变换在虽然是听起来差不多的两个名词,但其实表达的是两个基本相反的内容。比如坐标系A到坐标系B的坐标系变换主要还是强调坐标系A如何通过这个变换矩阵变到坐标系B,在这里,转动的是坐标系A的相关坐标轴,就好像字面意思那样,起始位置在A(就好像把A当做参考系一样)。坐标变换在slam中其实是针对某些具体点来讲的(比如某些静止不动的地图点),我们需要对这些静止不动的点做一些坐标转换,比如将点的坐标从激光雷达坐标

  5. javascript - 变换矩阵线性组合的旋转动画导致放大缩小 - 2

    我有一个3x3矩阵(startMatrix),它表示图像的实际View(平移、旋转和缩放)。现在我创建一个新矩阵(endMatrix),它有一个恒等矩阵、新的x和y坐标、新的Angular和新的比例,例如:endMatrix=translate(identityMatrix,-x,-y);endMatrix=rotate(endMatrix,angle);endMatrix=scale(endMatrix,scale);endMatrix=translate(endMatrix,(screen.width/2)/scale,screen.height/2)/scale);和功能(标准的

  6. matlab 编写计算傅里叶系数函数 - 2

    1.编写计算傅里叶级数系数的函数%计算函数x的N次谐波的傅里叶级数系数,函数的周期为T0%数组X存放的是傅里叶系数,也就是幅值%数组w存放的是频率function[X,w]=fourierseries(x,T0,N)symst;%因为传进来的x函数中包含符号t,所以函数内部也要定义符号变量t,否则会报错fork=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;endendX(k)=int(x*exp(-j*2*pi*(k-1)*t/T0),t,0,T0)/T0;上面的式子为傅里叶公式X(k)=1T0∗∫0

  7. javascript - Internet Explorer 中的锯齿状按钮边缘 - 2

    如何去除InternetExplorer中宽按钮的锯齿状边缘?例如: 最佳答案 您还可以通过在按钮上设置background-color和/或border-color来消除WindowsXP的按钮样式(以及所有其他版本的Windows)。尝试以下样式:background-color:black;color:white;border-color:redgreenblueyellow;当然,您可以使它更赏心悦目。但你明白我的意思:)StackOverflow使用这种方法。 关于javasc

  8. javascript - 应用所有变换矩阵 - 2

    我正在寻找一种可能快速的方法来应用给定svg图形的所有变换矩阵。换句话说:该算法应该去除所有“变换”属性并将图形的所有坐标变换为绝对坐标。他们是否有任何库可以做到这一点,或者他们是否有任何SVGDomInterface方法可以做到这一点?编辑::如果我这样调用合并方法:$.each(svg.find('path'),function(i){this.transform.baseVal.consolidate();});没有任何反应,如果我这样调用它:$.each(svg.find('path'),function(i){this.transform.animVal.consolidat

  9. javascript - d3.js - 变换和过渡,多行 - 2

    我已按照以下说明进行操作:http://bost.ocks.org/mike/path/用于使用单行创建和动画化单个图形。并且,弄清楚了如何在图表中创建多条线:DrawingMultipleLinesinD3.js主要问题:在将新数据移动并插入我的数据阵列后,我很难转换多行。我创建了N行:(时间:纪元时间,向前迈进)varseriesData=[[{time:1335972631000,value:23},{time:1335972631500,value:42},...],[{time:1335972631000,value:45},{time:1335972631500,value

  10. javascript - 3D CSS 变换 : translateZ causes elements to disappear in Chrome - 2

    我正在使用Javascript在Chrome中操作CSS转换,我注意到当translateZ值变得太低(很远)时,元素将会消失。这似乎只有在有大量元素时才会发生。这似乎与元素的z-index有关。这是问题的一个例子:http://jsbin.com/iZAYaRI/26/edit将鼠标悬停在输出上以查看问题。有人知道为什么会这样吗?更新:看起来该元素并没有真正消失,而是移动了一千个像素左右。 最佳答案 在我的例子中,z平移属性大约为零。将我的零翻译从0更改为1解决了我的问题。在safari中运行的原始代码:transform:sca

随机推荐