【问题标题】:How can I convert C# code to MATLAB?如何将 C# 代码转换为 MATLAB?
【发布时间】:2011-03-27 05:46:06
【问题描述】:

我有这个 C# 代码,我正在尝试将其转换为 MATLAB 代码。

float randomFloat()
{
    return (float)rand() / (float)RAND_MAX;
}
int calculateOutput(float weights[], float x, float y)
{
    float sum = x * weights[0] + y * weights[1] + weights[2];
    return (sum >= 0) ? 1 : -1;
}

我认为我们不能在 MATLAB 中使用 floatint。如何更改代码?

【问题讨论】:

  • 另外,请查看此处的 Matlab 文档:mathworks.com/access/helpdesk/help/techdoc/learn_matlab/…。它很好地解释了程序的工作原理。
  • @ishamahajan:您似乎使用的是其他用户,但如果这与您之前关于神经网络的一系列问题有关,那么来自这里的原始代码:stackoverflow.com/questions/1697243/help-with-perceptron/… 实际上是 C \C++ 不是 C# :)
  • Amro- 你非常聪明。但我是她的罗米-伊莎
  • 我和 shilpa 正在尝试做一层神经网络,但由于我们不应该使用神经工具箱,这对我们来说越来越难了。你有它的伪代码吗?或者我应该直接使用例如。您告诉我们并将其完全更改为matlab?它会工作吗?
  • 如果 1 层 NN 是指感知器,那么实现 delta 规则 来学习权重应该很简单(就像我链接到的 C 代码一样) .否则,如果你的目标是一个完整的前馈多层感知器,那么它会涉及更多,我建议你在跳到代码之前先参考你的教科书来理解理论。..

标签: matlab


【解决方案1】:

第一个很简单:rand()

第二个函数可以写成:

if ( [x y 1]*w(:) >=0 )
  result = 1;
else
  result = -1;
end

【讨论】:

    【解决方案2】:

    内置函数 rand() 已经完成了您尝试对 randomFloat() 执行的操作。

    对于calculateOutput,您可以使用与您所拥有的非常相似的东西,但正如您所说,您不需要声明类型:

    function result = calculateOutput (weights, x, y)
    s = x * weights(1) + y * weights(2) + weights(3);
    if s >= 0
        result = 1;
    else
        result = -1;
    end
    end
    

    请注意,matlab 向量是从一开始的,因此您需要调整索引。

    如果你想把它推广到任意向量,“向量化”它是有意义的,但对于这种简单的情况,像这样的直接翻译应该没问题。

    【讨论】:

      猜你喜欢
      • 2017-08-13
      • 2023-03-27
      • 2014-05-21
      • 2022-12-30
      • 2013-01-18
      • 2016-05-17
      • 2023-04-02
      • 1970-01-01
      • 2019-05-05
      相关资源
      最近更新 更多