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
Matlab 将MALTAB FIS合并到连续循环中_Matlab_Fuzzy Logic - Fatal编程技术网

Matlab 将MALTAB FIS合并到连续循环中

Matlab 将MALTAB FIS合并到连续循环中,matlab,fuzzy-logic,Matlab,Fuzzy Logic,我目前正在使用两个Arduino微控制器读取两组数据,并通过蓝牙将数据发送到MATLAB。在代码中,MATLAB读入串行数据,通过一系列嵌套的“if”循环将其发送,以组织数据。一旦组织好,存储的数据将用作模糊逻辑的输入。我遇到的问题是模糊的。当我尝试使用存储的数据作为输入(数字)时,我收到一个错误,即它们是空的,即使MATLAB显示的数据没有问题 这是我的代码(忽略“x”“y”“z”变量,这些变量未在FIS中使用): 我收到的错误是:“第一个参数的列数应该与输入变量和 行数与输入值的独立集数相同

我目前正在使用两个Arduino微控制器读取两组数据,并通过蓝牙将数据发送到MATLAB。在代码中,MATLAB读入串行数据,通过一系列嵌套的“if”循环将其发送,以组织数据。一旦组织好,存储的数据将用作模糊逻辑的输入。我遇到的问题是模糊的。当我尝试使用存储的数据作为输入(数字)时,我收到一个错误,即它们是空的,即使MATLAB显示的数据没有问题

这是我的代码(忽略“x”“y”“z”变量,这些变量未在FIS中使用):

我收到的错误是:“第一个参数的列数应该与输入变量和
行数与输入值的独立集数相同。”

错误是由于输入不是双精度的。通过合并'str2double',我可以将输入转换为double并输入FIS

a = Bluetooth('HC-05',1);

b = Bluetooth('IN',1)

a.ReadAsyncMode = 'continuous';

b.ReadAsyncMode = 'continuous';

fopen(a); %data collector A

fopen(b); %data collector B

%A data points

heartRateVarA=0;

temperatureVarA=0;

xVarA=0;

yVarA=0;

zVarA=0;

%B data points

heartRateVarB=0;

temperatureVarB=0;

xVarB=0;

yVarB=0;

zVarB=0;

%A & B loop --- Uses 'fgets' to collect 2 lines of data, one per declared

%variable before parsing into corresponding variable

while (a.Status == 'open')&(b.Status=='open')

for i=1 : 1 : 2

 matchA = fgets(a);    `

 matchB = fgets(b);


 testA=contains(matchA,'Celsius');

 testB = contains(matchB,'Celsius'); 

 if (testA==1)
     temperatureVarA=matchA;
 else
     testA=contains(matchA,'BPM');
     if(testA==1)
         heartRateVarA=matchA;
     else
         testA=contains(matchA,'X:');
         if(testA==1)
             xVarA=matchA;
         else
             testA=contains(matchA,'Y:');
             if(testA==1)
                yVarA=matchA;
             else
                 testA=contains(matchA,'Z:');
                 if(testA==1)
                     zVarA=matchA;
                 end
             end
         end    
     end
 end

 if (testB==1)
     temperatureVarB=matchB;
 else
     testB=contains(matchB,'BPM');
     if(testB==1)
         heartRateVarB=matchB;
     else
         testB=contains(matchB,'X:');
         if(testB==1)
             xVarB=matchB;
         else
             testB=contains(matchB,'Y:');
             if(testB==1)
                yVarB=matchB;
             else
                 testB=contains(matchB,'Z:');
                 if(testB==1)
                     zVarB=matchB;
                 end
             end
         end    
     end
 end

end

    %Display read and parsed in data

    fprintf('Heart Rate A : '); disp(heartRateVarA);

    fprintf('Temperature A : '); disp(temperatureVarA);

    %fprintf('X A : '); disp(xVarA);

    %fprintf('Y A : '); disp(yVarA);

    %fprintf('Z A : '); disp(zVarA);

    fprintf('Heart Rate B : '); disp(heartRateVarB);
    fprintf('Temperature B : '); disp(temperatureVarB);
    %fprintf('X B : '); disp(xVarB);
    %fprintf('Y B : '); disp(yVarB);
    %fprintf('Z B : '); disp(zVarB);

   %FIS eval --- treats stored values of HR and temp variables as inputs
    fis=FuzzyPrototype;
    outputA = evalfis([heartRateVarA temperatureVarA],fis);
    outputB = evalfis([heartRateVarB temperatureVarB],fis);`

    disp(outputA)
    disp(outputB)

    if(a.Status ~= 'open')|(b.Status ~= 'open')
       break;
    end

pause(20);   

end