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

10 views (last 30 days)
海斗
海斗 on 3 Dec 2022
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 Comment
海斗
海斗 on 3 Dec 2022
Edited: 海斗 on 3 Dec 2022
詳しく言うと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を始めたばかりでまったくわかりません。助けていただけると幸いです。よろしくお願いします。

Sign in to comment.

Answers (2)

Atsushi Ueno
Atsushi Ueno on 3 Dec 2022
  • 上記文法に従い関数の出力を定義する必要があります
  • ”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

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!