()の中に数値を入れ​て、その結果を0,1​,2,3,4に振り分​ける関数を作りたいの​ですが関数が認識され​なく困っています

조회 수: 7 (최근 30일)
海斗
海斗 2022년 12월 3일
function cal_gp(a)
if a<=100 & a>=90
cal_gp(a)==4.0
elseif a<=89 & a>=80
cal_gp(a)==3.0
elseif a<=79 & a>=70
cal_gp(a)==2.0
elseif a<=69 & a>=60
cal_gp(a)==1.0
elseif a<=59 & a>=0
cal_gp(a)==0
elseif a==-5
cal_gp(a)==non
end
end
  댓글 수: 1
海斗
海斗 2022년 12월 3일
편집: 海斗 2022년 12월 3일
詳しく言うとcal_gp()の()の中にテストの得点を入れることで0,1,2,3,4の成績を得れるという関数を作りたいです。成績の振り分けは、0~59は「0」、60~69は「1」、70~79は「2」、80~89は「3」、90~100は「4」、-5は履修中という意味でnonにしています。matrabを始めたばかりでまったくわかりません。助けていただけると幸いです。よろしくお願いします。

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

답변 (2개)

Atsushi Ueno
Atsushi Ueno 2022년 12월 3일
  • 上記文法に従い関数の出力を定義する必要があります
  • ”cal_gp(a)==**”は「関数cal_gp(a)の出力が**か否か」を出力します
  • 上記では同じ関数の再起呼び出しが続く事になり、out of memoryエラーで停止してしまいます
  • また比較「関数の出力が**か否か」ではなく代入「関数の出力を**にする」だと思います
  • "non"は未定義の変数になるので、他の変数や値(例えばNaN)にする必要があります
  • else if 文はありますが else 文がありません。無くても文法は問題ありませんが、入力が0以上100以下以外(-5を除く)の時は、cal_gp(a)から何も出力されない事になり「関数の出力が定義されない」旨のエラーが出力されます。
function output = cal_gp(a) % 関数の出力outputを定義
if a<=100 & a>=90
output = 4.0; % 以降すべてcal_gp(a)==**からoutput=**に変更
elseif a<=89 & a>=80
output = 3.0;
elseif a<=79 & a>=70
output = 2.0;
elseif a<=69 & a>=60
output = 1.0;
elseif a<=59 & a>=0
output = 0;
elseif a==-5
output = NaN; % nonをNaNに変更
else % else文を追加
disp('input a>100 or a<0 except a==-5');
output = NaN;
end
end

交感神経優位なあかべぇ
MATLABでは、下記のような感じで関数を書きます。
grade = cal_gp(95); % 関数の呼び出し
disp(grade); % 結果の表示
4
dataType = class(grade) % リターン値のデータ型の確認。行の末尾にセミコロンを省略すると、実行結果が表示されます。
dataType = 'double'
% grade : 出力引数(成績)
% a : 引数(テストの得点)
function grade = cal_gp(a)
% MATLABでは、定義した出力引数(grade)に値を代入することで、return値として認識されます。
if a<=100 & a>=90
grade = 4; % MATLABでは、入力した数値はdouble型(倍精度浮動小数点型)になります。(なので、4.0のような小数点表記はいりません)
% double型以外を代入したい場合は、uint32(4)などとデータ型をキャストする必要があります。
elseif a<=89 & a>=80
grade = 3;
elseif a<=79 & a>=70
grade = 2;
elseif a<=69 & a>=60
grade = 1;
elseif a<=59 & a>=0
grade = 0;
elseif a==-5
grade = NaN;
end
end

카테고리

Help CenterFile Exchange에서 起動と終了에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!