Problem in matlab function (matrix to scalar)

조회 수: 1 (최근 30일)
Muhammed Adel
Muhammed Adel 2017년 6월 20일
편집: Jan 2017년 6월 20일
Hello everyone, I have a problem appears in matlab function which makes an error when debugging the program of an texas instrument kit . I have no matrix in the matlab function. but this error say you must convert the matrix to scalar. How ! Thanks.
if true
function y =fcn(fb,up,down,entr,esc,reset)
y=0;
persistent a
if isempty(a)
a=0;
end
if reset==1
a=0
end
%%%%%%%%%%%%%%%%%%%%%%%%
if entr==1 && fb==0
a=100
end
if fb==100 && up==1
a=200
elseif fb==200 && up==1
a=300
elseif fb==300 && up==1
a=400
elseif fb==400 && up==1
a=500
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if down==1 && fb==200
a=100
elseif down==1 && fb==300
a=200
elseif down==1 && fb==400
a=300
elseif down==1 && fb==500
a=400
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==100 && entr==1
a=110
end
if fb==110 &&up==1
a=120
end
if fb==120 && up==1
a=130
end
if fb==130&& up==1
a=140
end
if fb==140 && up==1
a=150
end
if fb==150 && up==1
a=160
end
%%%%%%%%%%%%%%%%%%%%
if fb==160 && down==1
a=150
end
if fb==150 && down==1
a=140
end
if fb==140 && down==1
a=130
end
if fb==130 && down==1
a=120
end
if fb==120 && down==1
a=110
end
if fb==110 && down==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==110 && entr==1
a=111
end
if fb==111 && esc==1
a=110
end
if fb==110 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==120 && entr==1
a=121
end
if fb==121 && esc==1
a=120
end
if fb==120 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%
if fb==130 && entr==1
a=131
end
if fb==131 && esc==1
a=130
end
if fb==130 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==140 && entr==1
a=141
end
if fb==141 && esc==1
a=140
end
if fb==140 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==150 && entr==1
a=151
end
if fb==151 && esc==1
a=150
end
if fb==150 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==160 && entr==1
a=161
end
if fb==161 && esc==1
a=160
end
if fb==160 && esc==1
a=100
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==200 && entr==1
a=210
end
if fb==210 &&up==1
a=220
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==220 &&down==1
a=210
end
%%%%%%%%%%%%%%%%%%%%%%%
if fb==210 &&entr==1
a=211
end
if fb==211 &&esc==1
a=210
end
if fb==210 &&esc==1
a=200
end
%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==220 && entr==1
a=221
end
if fb==221 && esc==1
a=220
end
if fb==220 &&esc==1
a==200
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==300 && entr==1
a=310
end
if fb==310 && esc==1
a=300
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==400 && entr==1
a=401
end
if fb==401 && up==1
a=402
end
if fb==402 && up==1
a=403
end
if fb==403 && up==1
a=404
end
if fb==404 && up==1
a=405
end
if fb==405 && up==1
a=406
end
if fb==406 && up==1
a=407
end
if fb==407 &&up==1
a=408
end
if fb==408 && up==1
a=409
end
if fb==409 && up==1
a=410
end
%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==410 && down==1
a=409
end
if fb==409 && down==1
a=408
end
if fb==408 && down==1
a=407
end
if fb==407 && down==1
a=406
end
if fb==406 && down==1
a=405
end
if fb==405 && down==1
a=404
end
if fb==404 && down==1
a=403
end
if fb==403 && down==1
a=402
end
if fb==402 &&down==1
a=401
end
if fb==401 &&down==1
a=400
end
%%%%%%%%%%%%%%%%%%%%%%%
if fb==401 && esc==1
a=400
elseif fb==402 && esc==1
a=400
elseif fb==403 && esc==1
a=400
elseif fb==403 && esc==1
a=400
elseif fb==404 && esc==1
a=400
elseif fb==405 && esc==1
a=400
elseif fb==406 && esc==1
a=400
elseif fb==407 && esc==1
a=400
elseif fb==408 && esc==1
a=400
elseif fb==409 && esc==1
a=400
elseif fb==410 && esc==1
a=400
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==500 && entr==1
a=510
end
if fb==510 && up==1
a=520
end
if fb==520 && up==1
a=530
end
%%%%%%%%%%%%%%%%%%%%%%%%
if fb==530 && down==1
a=520
end
if fb==520 && down==1
a=510
end
if fb==510 && down==1
a=500
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==510 && entr==1
a=511
end
if fb==511 && up==1
a=512
end
if fb==512 && down==1
a=511
end
if fb==511 && esc==1
a=510
elseif fb==512 && esc==1
a=510
elseif fb==510 && esc==1
a=500
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==520 && entr==1
a=521
end
if fb==521 && up==1
a=522
end
if fb==522 && down==1
a=521
end
if fb==521 && esc==1
a=520
elseif fb==522 && esc==1
a=520
elseif fb==520 && esc==1
a=500
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if fb==530 && entr==1
a=531
end
if fb==531 && esc==1
a=530
end
if fb==530 &&esc==1
a=500
end
%%%%%%%%%%%%%%%%%%%%%%%
y=a;
end
  댓글 수: 2
Adam
Adam 2017년 6월 20일
편집: Adam 2017년 6월 20일
You haven't told us anything about fb, up, down, entr, esc, reset or what line causes the error so how could we possibly be expected to know what the result of all this code will be?!
Jan
Jan 2017년 6월 20일
편집: Jan 2017년 6월 20일
Please post the complete error message and tell us the failing line. The less the readers have to guess, the more precise is the answer.
The code can be simplified, e.g.:
% from:
if fb==110 &&up==1
a=120
end
if fb==120 && up==1
a=130
end
if fb==130&& up==1
a=140
end
if fb==140 && up==1
a=150
end
if fb==150 && up==1
a=160
end
% to:
if up == 1
switch fb
case 110,
a = 120
case 120
a = 130
case 130
a = 140
case 140
a = 150
case 150
a = 160
end
end
Or even leaner:
if up == 1 && ismember(fb, 110:150)
a = fb + 10;
end

댓글을 달려면 로그인하십시오.

답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by