在Octave中按列对单​​行向量求和

Tim*_*mGJ 0 octave

我写了一个短倍频脚本绘制功能sum(sin(2k-1)/(2k-1))k = 1..n条款.(我试图模拟连续项如何使输出收敛到方波.

% Program to model square-wave using sum of sines

terms=3

theta=linspace(0, 6*pi, 1000);
k=[1:terms]';
n=2*k-1;

q=sin(n*theta)./n;
y=sum(q);
plot(theta, y);
Run Code Online (Sandbox Code Playgroud)

sum()对于术语> 1,它工作正常(即函数返回包含每列总和的向量)但是当术语== 1(即它应该只绘制一个正弦波)时,该sum()函数计算行的总和并返回一个标量.

sum()即使只有一行,我如何得到函数总计每列,或者如何重新整形或切片或任何行向量,使得它不是有效成为二维矩阵的维度n的一维向量尺寸1xn

car*_*aug 8

sum()与Octave中的许多其他函数一样,默认情况下将作用于第一个非单一维度.因此,您需要做的就是具体了解维度.来自sum()帮助文字:

如果省略DIM,则默认为第一个非单例维度.

所以,你需要做的只是具体的维度,即使用sum (q, 1):

terms = 1

theta = linspace (0, 6*pi, 1000);
k = [1:terms]';
n = 2*k-1;

q = sin (n*theta) ./ n;
y = sum (q, 1);
plot (theta, y);
Run Code Online (Sandbox Code Playgroud)