好吧,所以看起来你问的第一点是正确的。但是,当您将事物相乘时,您需要使用*运算符...因此2k - 1应为2*k - 1。忽略这一点,给出方波方程,你symsum正确。此函数的输入仅为一个参数 - n。您在上面的等式中看到的是方波的Fourier Series表示。这个理论的一个卑鄙版本是你可以将周期函数表示为正弦函数的无限求和,每个函数加权一定量。你在等式中看到的实际上是方波的傅里叶级数。
n控制要添加到等式中的正弦曲线的总数。你拥有的正弦波越多,功能看起来就越像方波。在问题中,他们希望您使用n的值。如果n变得非常大,它应该开始接近看起来像方波的东西。
symsum将此傅立叶级数表示为t的函数。您现在需要做的是,您需要将t的值替换为此表达式,以获取每个值t的输出幅度。他们已经为您定义了从0到4*pi的向量,其间有1001个点。
定义此向量,然后您需要使用subs将时间值替换为symsum表达式,完成后,将它们转回double,以便你实际上得到了一个数字向量。
因此,您的功能应该是这样:
function [g] = square_wave(n)
syms t k; %// Define t and k
f = sin((2*k-1)*t)/(2*k-1); %// Define function
F = symsum(f, k, 1, n); %// Define Fourier Series
tVector = linspace(0, 4*pi, 1001); %// Define time points
g = double(subs(F, t, tVector)); %// Get numeric output
<