【问题标题】:Math "./" AND rem operation数学 "./" AND rem 运算
【发布时间】:2014-03-21 22:50:08
【问题描述】:

我正在学习 Visual Basic .NET,我想在 Matlab 文件中转换一个函数。

但是,我不确定如何将 ./ 运算符转换为 VB .Net

对于rem 函数,我确信它必须返回除法的余数。因此,我将rem(low, high) = 0 转换为low mod high = 0

但是,我不确定如何将./ 操作转换为 VB .Net。例如,我有low-high ./2 ...但我不知道在 VB .NET 中使用什么。

有人知道 VB.NET 中的./ 运算符吗?

更新

    function r = QPR(Low , high, step)
    if(Low < 0)
      return;
    end;
    if(low - high < 0)
      return;
    end;
    x = (Low-step ./2) + ((high + step ./2)* rand);

据我了解,底部的 Tim 示例是正确的。 ./是Array的数学运算,所以Low,high,step一定是某种数组。 但是,它是彼此相减的,例如(Low - step)。 我对他们如何相互减去感到困惑。 我可以将矩阵减法的想法应用于(低步)部分吗?

【问题讨论】:

  • 您的 matlab 代码已损坏。对于Low &lt; 0,没有分配输出。除此之外,lowLow 是混合的。为任何输入复制此函数非常复杂,请描述预期的输入和输出。据我阅读您的cmets,Lowhigh 是两个向量/数组,步骤是什么?
  • 不清楚这是在缩放器还是数组上运行。 rand 不带参数只给出一个介于 0 和 1 之间的缩放器,这表明它的缩放器,./ 是正常除法,* 是正常乘法。该函数看起来像是在尝试生成一个介于低(step/2)和高+(step/2)之间的数字,但并不完全是因为最大值是低+高(当 rand=1 时)。

标签: vb.net matlab math operators


【解决方案1】:

我没有使用 matlab 的经验,但是 here's 文档(您可以提供):

x = A./B 将 A 的每个元素除以 B 的相应元素。 输入 A 和 B 必须具有相同的大小,除非其中一个是标量值。一种 标量值扩展为与另一个相同大小的数组 输入。

因此假设ADouble() 并且BDouble() 结果是Double() 其中每个值都是除法的结果,您可以使用Enumerable.Zip

Dim a As Double() = {1.5, 2, 5}
Dim b As Double() = {3.5, 4, 7}
Dim c As Double() = a.Zip(b, Function(aVal, bVal) aVal / bVal).ToArray()        

但也许我误解了功能,然后解释它并提供示例数据。

【讨论】:

  • 嗨,蒂姆,感谢您的帮助。但是,我对matlab一无所知。这个函数传递低,高,步。如果我的理解是正确的(根据您发布的内容),那就是数组的数学运算。但是,当我检查代码时,如果这些变量是数组,它们会进行数学运算,例如(高 - 低),那么我该如何处理(高 - 低)?
  • @BobMa:使用 matlab 文档。对于向量输入,-./ 均按元素应用。 Tim Schmelter 已经解释了如何将操作元素应用于数组。
  • Matlab 具有特别先进的数组处理运算,它以一种对数学家和统计学家实现向量和矩阵运算非常自然的方式处理它们。 VB 是一种更通用的不太专业的语言,没有专门的处理,你甚至可以只添加两个数组。是低数组和高数组还是简单的数字?如果它们只是数字(高-低)./2 只是找到两者之间的中点,(高-低)/2 就可以了。这概括为使用两个向量,找到它们之间的中点。对于向量和矩阵,还有其他除法概念。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 1970-01-01
  • 2014-04-22
  • 2019-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多