如何将 C# 代码转换为 MATLAB?

How can I convert C# code to MATLAB?

提问人:user414981 提问时间:8/9/2010 最后编辑:HebeleHododouser414981 更新时间:3/22/2013 访问量:2156

问:

我有这个 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的

评论

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

答:

1赞 walkytalky 8/9/2010 #1

内置函数 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 向量是从 1 开始的,因此您需要调整索引。

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

4赞 Amro 8/9/2010 #2

第一个很简单:rand()

第二个函数可以写成:

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