Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab Arduino试图计算一个神经网络_Matlab_Arduino_Neural Network - Fatal编程技术网

Matlab Arduino试图计算一个神经网络

Matlab Arduino试图计算一个神经网络,matlab,arduino,neural-network,Matlab,Arduino,Neural Network,我试图用下面的代码计算一个神经网络 #include <math.h> double feat_hid[10]; double output[4]; const double w_hid[8][10] = { {0.0706307913427445,-0.332136075169963,1.86159334821608,1.55009706502897,1.55669357055137,-1.93539022266504,1.40698067828037,-0.1

我试图用下面的代码计算一个神经网络

#include <math.h> 
double feat_hid[10]; 
double output[4]; 

const double w_hid[8][10] = 
{ 
    {0.0706307913427445,-0.332136075169963,1.86159334821608,1.55009706502897,1.55669357055137,-1.93539022266504,1.40698067828037,-0.196054693169832,-0.317952257631136,4.69951344792126}, 
    {-0.860303689780744,-0.142965971622307,1.00938809624265,3.03147950247308,0.26570362705432,-0.63835074899079,-0.108472152405573,-0.465092677563643,-1.26640787415541,3.47897119519849}, 
    {-0.272080445746987,0.388264886856488,1.93120693933139,2.63260374630115,-0.403646834510117,-1.69806363784962,-1.47457233648421,-1.50775491078107,-0.835555146571103,0.586017106027158}, 
    {0.523268479966795,1.60528083325264,1.8945332979293,2.83572254589689,-1.68716858062427,-0.575246483351286,0.408066044886574,0.58303163597391,1.27390651063673,0.00318251321831592}, 
    {0.363035740315566,-0.696513924175445,1.41563086072654,1.42184591641306,2.04584849389715,0.528929786530872,1.07312589674496,0.309695239536318,1.25983320795077,0.522937576790264}, 
    {1.91097305183671,0.526449978690799,-0.00374666478341612,-0.783150846208907,1.01286141219052,-1.60758427665251,-0.040595792623655,-0.751738504583724,-0.930564482543811,-0.0312598878148829}, 
    {-0.364318798326876,6.0862613777679,-1.97910374691563,-0.990892711032243,-4.01625281770135,-0.730723605319977,2.79951479383628,1.23870829231029,-1.96949038202552,-1.48674789633524}, 
    {-2.51147997247322,-2.42006923324837,0.0825476300769622,0.780436871112016,-0.151841195266197,0.3603578344112,-1.10038496139283,1.01784327038377,-2.33380006889957,-0.276962857144392} 
}; 

const double w_out[11][4] = 
{ 
    {-0.848153262003428,1.04206942072723,-0.56827515726385,0.368049168481758}, 
    {2.65699122475564,-2.31195040158215,-0.324512289348535,-0.0248140339246439}, 
    {0.819329194280546,0.039943623410223,-1.25202766689859,0.393685637397724}, 
    {-1.28944659517956,2.66620424439295,-0.968011825082177,-0.404502491304304}, 
    {-0.224432096177094,-0.239370531739619,1.95124987383465,-1.47584887746872}, 
    {0.520195254302156,-0.0716719005040372,-0.795815587506882,0.344121703272989}, 
    {-1.260329779349,2.04221311676928,0.251086051743563,-1.03192351329109}, 
    {-0.680299559455324,0.452665873842875,-0.457043098095797,0.699247978937067}, 
    {0.262467710721102,0.876119011755995,-1.84541649804428,0.689973715895836}, 
    {0.602141912445942,-2.3913813206841,1.43782014708464,0.346066727829377}, 
    {-0.0789595649460575,0.0759034703177117,-0.954465934396254,-1.06633481363805} 
}; 
double accum; 
double feature[7] = { 0.802748046,  0.79983412  ,-0.379610559,  0.02006534, 0.244444444 -1, 0.872340426}; 

void setup() 
{ 
    /* add setup code here */ 
    Serial.begin(9600); 
}   

void loop() 
{ 
    for (int i = 0; i < 10; i++) 
    { 
        accum =0; 
        accum = w_hid[7][i]; 

        for (int j = 0; j < 7; j++) 
        { 
            accum += feature[j] * w_hid[j][i]; 
        }   
        //Serial.println(accum,4); 

        feat_hid[i] = tanh(accum); 
    }   

    for (int i = 0; i < 4; i++) 
    { 
        accum=0; 
        accum = w_hid[10][i]; 
        for (int j = 0; j < 10; j++) 
        { 
            accum += feat_hid[j] * w_out[j][i]; 
        }   
        output[i] = (accum); 
    }   

    Serial.println("wew"); 
    Serial.println(output[0], 7); 
    Serial.println(output[1], 7); 
    Serial.println(output[2], 7); 
    Serial.println(output[3], 7); 

    for (size_t i = 0; i < 10; i++) 
    { 
        feat_hid[i] = 0; 
    }   
    for (size_t i = 0; i < 4; i++) 
    { 
        output[i] = 0; 
    } 
} 
#包括
双专长隐藏[10];
双输出[4];
常数双w_hid[8][10]=
{ 
{0.0706307913427445,-0.332136075169963,1.86159334821608,1.55009706502897,1.55669357055137,-1.93539022266504,1.40698067828037,-0.196054693169832,-0.317952257631136,4.69951344792126}, 
{-0.860303689780744,-0.142965971622307,1.00938809624265,3.03147950247308,0.26570362705432,-0.63835074899079,-0.108472152405573,-0.465092677563643,-1.26640787415541,3.47897119519849}, 
{-0.272080445746987,0.388264886856488,1.93120693933139,2.63260374630115,-0.403646834510117,-1.69806363784962,-1.47457233648421,-1.50775491078107,-0.835555146571103,0.586017106027158}, 
{0.523268479966795,1.60528083325264,1.8945332979293,2.83572254589689,-1.68716858062427,-0.575246483351286,0.408066044886574,0.58303163597391,1.27390651063673,0.00318251321831592}, 
{0.363035740315566,-0.696513924175445,1.41563086072654,1.42184591641306,2.04584849389715,0.528929786530872,1.07312589674496,0.309695239536318,1.25983320795077,0.522937576790264}, 
{1.91097305183671,0.526449978690799,-0.00374666478341612,-0.783150846208907,1.01286141219052,-1.60758427665251,-0.040595792623655,-0.751738504583724,-0.930564482543811,-0.0312598878148829}, 
{-0.364318798326876,6.0862613777679,-1.97910374691563,-0.990892711032243,-4.01625281770135,-0.730723605319977,2.79951479383628,1.23870829231029,-1.96949038202552,-1.48674789633524}, 
{-2.51147997247322,-2.42006923324837,0.0825476300769622,0.780436871112016,-0.151841195266197,0.3603578344112,-1.10038496139283,1.01784327038377,-2.33380006889957,-0.276962857144392} 
}; 
常数双w_out[11][4]=
{ 
{-0.848153262003428,1.04206942072723,-0.56827515726385,0.368049168481758}, 
{2.65699122475564,-2.31195040158215,-0.324512289348535,-0.0248140339246439}, 
{0.819329194280546,0.039943623410223,-1.25202766689859,0.393685637397724}, 
{-1.28944659517956,2.66620424439295,-0.968011825082177,-0.404502491304304}, 
{-0.224432096177094,-0.239370531739619,1.95124987383465,-1.47584887746872}, 
{0.520195254302156,-0.0716719005040372,-0.795815587506882,0.344121703272989}, 
{-1.260329779349,2.04221311676928,0.251086051743563,-1.03192351329109}, 
{-0.680299559455324,0.452665873842875,-0.457043098095797,0.699247978937067}, 
{0.262467710721102,0.876119011755995,-1.84541649804428,0.689973715895836}, 
{0.602141912445942,-2.3913813206841,1.43782014708464,0.346066727829377}, 
{-0.0789595649460575,0.0759034703177117,-0.954465934396254,-1.06633481363805} 
}; 
双累积;
双特征[7]={0.802748046,0.79983412,-0.379610559,0.02006534,0.2444444-1,0.872340426};
无效设置()
{ 
/*在此处添加设置代码*/
Serial.begin(9600);
}   
void循环()
{ 
对于(int i=0;i<10;i++)
{ 
累计=0;
累计=w_hid[7][i];
对于(int j=0;j<7;j++)
{ 
累计+=特征[j]*w_hid[j][i];
}   
//连续打印(累计4次);
功绩hid[i]=tanh(累计);
}   
对于(int i=0;i<4;i++)
{ 
累计=0;
累计=w_hid[10][i];
对于(int j=0;j<10;j++)
{ 
累计+=专长隐藏[j]*w_out[j][i];
}   
输出[i]=(累计);
}   
Serial.println(“wew”);
Serial.println(输出[0],7);
Serial.println(输出[1],7);
Serial.println(输出[2],7);
Serial.println(输出[3],7);
对于(大小i=0;i<10;i++)
{ 
专长隐藏[i]=0;
}   
对于(大小i=0;i<4;i++)
{ 
输出[i]=0;
} 
} 
输出按以下值进行:

-2.0422704

-0.2195258

3.6133847

-1.3158617

但是,当我尝试使用matlab重新计算时,输出经过(这是正确的):

0.856575444075245

-0.997328999300809

-0.911066976760467

-0.949747387652545

我的问题是,
arduino和浮动/双重计算是否存在错误,导致计算结果错误?我记得,上面的草图和matlab代码之间的代码是相似的


感谢您的反馈~

双功能[7]={0.802748046,0.79983412,-0.379610559,0.02006534,0.2444444-1,0.872340426}

你忘了这两个值之间有个逗号吗


(很抱歉将此作为回答,仍然无法在此发表评论)

双功能[7]={0.802748046,0.79983412,-0.379610559,0.02006534,0.2444444-1,0.872340426}

你忘了这两个值之间有个逗号吗


(很抱歉将此作为答案发布,仍然无法在此发表评论)

如果您想知道在整个计算过程中数据是否被截断等问题,请在执行计算时使用Serial.println查看问题所在。@JoshEngelsma好的,我从第一次计算开始就尝试过了,但它已经错了(我记得),可能数组的调用是错误的?谢谢你的评论~我已经在我的电脑上构建了你的程序,我得到了与你的arduino相同的结果。问题不是arduino问题。你确定你的代码是正确的吗?谢谢@oreljul的评论,我已经得到了。如果你想知道在整个计算过程中数据被截断等等“好吧,只要在执行计算时使用Serial.println,看看问题出在哪里。@JoshEngelsma好吧,我从第一次计算开始就试过了,但已经错了(我记得),可能数组的调用是错误的?谢谢你的评论~我已经在我的电脑上构建了你的程序,我得到了与你的arduino相同的结果。问题不是arduino问题。你确定你的代码是正确的吗?谢谢你的评论@oreljul,我已经得到了。确实是问题吗?确实是问题吗?