私は、次の問題で注文されたMATLABスクリプトから簡単なテキストファイルを作成しようとしていますが、これは学期中の教室の成績を示しています。登録された20人の学生のための20のエントリーがあり、5つの宿題、中期スコア、および最終スコアがあります。MATLABに2つの列を追加するには?
CIN HW1 HW2 HW3 HW4 HW5 中期 最終
90.0 80.5 70.6 70.4 40.6 70.3私が追加しようとしている最後の列は「最終スコア」と「レターグレード」です。私のコードと関数を加えたものは次のとおりです。
clc
clear
f1 = fopen('grades.txt', 'w');
ID = randi([100000000 999999999],1,20);
HW1 = 100*rand(1,20);
HW2 = 100*rand(1,20);
HW3 = 100*rand(1,20);
HW4 = 100*rand(1,20);
HW5 = 100*rand(1,20);
MD = randi([0 100], 1,20);
Final = randi([0 100], 1,20);
FG = (.2*(HW1+HW2+HW3+HW4+HW5))+(.4*MD)+(.4*Final);
LG = getLetterGrade(FG(1,20))
T = [ID;HW1;HW2;HW3;HW4;HW5;MD;Final;FG;LG];
fprintf(f1,'\nStudentID\n\t HW1\t\t HW2\t\t HW3\t\t HW4\t\t HW5\t\t Midterm\t Final\t\t Final Grade\t\t Letter Grade\t\t \r\n');
fprintf(f1,'%i\n\t %3.1f\n\t\t %3.1f\n\t\t %3.1f\n\t\t %3.1f\n\t\t %3.1f\n\t\t %3.1f\n\t\t %3.1f\n\t\t %3.2f\n\t\t %c\n\t\t \r\n', T);
fclose(f1)
function letterGrade = getLetterGrade(FG)
if FG > 90
letterGrade = 'A';
elseif FG <= 89 && FG > 80
letterGrade = 'B';
elseif FG <= 79 && FG > 70
letterGrade = 'C';
else
letterGrade = 'F';
end
end
しかし、私はエラーが発生し続けます。
LG = C
error: vertical dimensions mismatch (9x20 vs 1x1)
助けてください。
Edit1:私は言及するのを忘れました。最終スコアでは、宿題、中期スコア、最終スコアを整数で合計します。さらに、レターグレードは、最終スコア(90 + = A; 80 + = B; 70 + = C; < 70 =失敗)からレターグレードを反映します。
最小限の例を作成してください。 <5行が残るまで、コードを削除することができます。この時点で、ほとんどのユーザーは自分自身のエラーを認識します。私はあなたの質問でエラーをトリガする行を見ることができず、私はOctaveとMATLABが行番号を表示していると確信しています。別のポイントは、デバッグを学ぶべきだということです。時間を節約してくれます。一番上に 'debug_on_error(1)'を追加し、スクリプトをもう一度実行すると、エラー時に停止します。今、あなたはこの時点でvarsを評価し、その値があなたの期待値と一致するかどうかを確認することができます(あなたの場合はサイズです) – Andy