在 Octave 中按列对单行向量求和
Summing a single row vector by column in Octave
我写了一个简短的 Octave 脚本,它为 k = 1..n
项绘制函数 sum(sin(2k-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);
对于项 > 1,它工作正常(即 sum()
函数 returns 一个包含每列总和的向量)。但是当项 == 1 时(即它应该只画一个正弦wave) sum()
函数计算行的总和,只是 returns 一个标量。
即使只有一行,我如何使用 sum()
函数对每一列进行总计,或者我如何重塑或切片或任何行向量,而不是一维向量维度 n 它实际上变成了维度 1xn?
的二维矩阵
q=sin(n*theta)./n;
if (terms == 1)
y = q;
else
y=sum(q);
end
plot(theta, y);
看看是否可行。
sum()
,和Octave中的很多其他函数一样,默认会作用于第一个非单例维度。因此,您需要做的就是具体说明维度。来自 sum()
帮助文本:
If DIM is omitted, it defaults to the first non-singleton dimension.
因此,您需要做的就是具体说明维度,即使用 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);
我写了一个简短的 Octave 脚本,它为 k = 1..n
项绘制函数 sum(sin(2k-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);
对于项 > 1,它工作正常(即 sum()
函数 returns 一个包含每列总和的向量)。但是当项 == 1 时(即它应该只画一个正弦wave) sum()
函数计算行的总和,只是 returns 一个标量。
即使只有一行,我如何使用 sum()
函数对每一列进行总计,或者我如何重塑或切片或任何行向量,而不是一维向量维度 n 它实际上变成了维度 1xn?
q=sin(n*theta)./n;
if (terms == 1)
y = q;
else
y=sum(q);
end
plot(theta, y);
看看是否可行。
sum()
,和Octave中的很多其他函数一样,默认会作用于第一个非单例维度。因此,您需要做的就是具体说明维度。来自 sum()
帮助文本:
If DIM is omitted, it defaults to the first non-singleton dimension.
因此,您需要做的就是具体说明维度,即使用 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);