Octave 以八度为单位按列求和单行向量
我已经编写了一个简短的八度脚本,它为k=1..n项绘制了函数sumsin2k-1/2k-1。我试图模拟连续项如何使输出收敛到方波Octave 以八度为单位按列求和单行向量,octave,Octave,我已经编写了一个简短的八度脚本,它为k=1..n项绘制了函数sumsin2k-1/2k-1。我试图模拟连续项如何使输出收敛到方波 % 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); 它工作正常,即sum函数返回一个向量,该向量包含
% 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);
它工作正常,即sum函数返回一个向量,该向量包含terms>1的每列的和。但是当terms==1时,也就是说,它应该只画一个正弦波,sum函数计算行的和,并只返回一个标量
即使只有一行,如何得到求和函数来求和每列,或者如何对行向量进行整形或切片,或者无论行向量是什么,从而使其有效地成为一维的n维向量,而不是一维的1xn维矩阵
看看这是否有效。sum与倍频程中的许多其他函数一样,默认情况下将作用于第一个非单态维度。因此,您所需要做的就是具体说明维度。从sum帮助文本:
如果省略DIM,则默认为第一个非单一维度
因此,您所需要做的就是具体说明维度,即使用sum q,1:
谢谢你。我相信它会起作用,但看起来有点混乱。程序本身既不在这里也不在那里。我想知道的是,我怎样才能使一个向量表现出来,并被当作一个矩阵来对待。
q=sin(n*theta)./n;
if (terms == 1)
y = q;
else
y=sum(q);
end
plot(theta, y);
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);