【问题标题】:Summing a single row vector by column in Octave在 Octave 中按列对单​​行向量求和
【发布时间】:2015-09-09 09:42:25
【问题描述】:

我编写了一个简短的 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);

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

即使只有一行,我如何让sum() 函数对每一列进行总计,或者我如何重塑或切片或任何行向量,而不是成为维度的一维向量 n 它实际上变成了一个维度为 1xn 的二维矩阵?

【问题讨论】:

    标签: octave


    【解决方案1】:

    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);
    

    【讨论】:

      【解决方案2】:
      q=sin(n*theta)./n;
      if (terms == 1)
          y = q;
      else
          y=sum(q);
      end
      plot(theta, y);
      

      看看这是否有效。

      【讨论】:

      • 谢谢。我确信它起作用,但它看起来有点杂乱无章。程序本身既不存在也不存在。我想知道(本质上)是如何使向量表现(并被视为)矩阵。
      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 2011-09-03
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      相关资源
      最近更新 更多