我正在学习matlab并正在练习功能分解。
我基本上有一段很长的代码可以使用,但我试图将它分解成具有支持功能的小块。
我花了很长时间调试它,并且得到了我的第一个支持功能' readAndPrintMonths'工作但我遇到了计算问题'
我目前收到的错误消息是:
使用月份出错(第36行) 请输入D.
printMonthlyStats> calculationLoop(第20行)出错 monthData = data(month,3:33);
printMonthlyStats中的错误(第6行) calculationLoop(数据,月份)
这里有代码。
function printMonthlyStats (inputCsvFilename)
% Reads a csv file of daily rainfalls over a year.
% Prints the total, max, and average rainfalls for each month.
[data, months] = readAndPrintMonths(inputCsvFilename);
for month = 1 : 12
[total, mean, maxFall] = calculationLoop(data, months)
end
end
function [data, months] = readAndPrintMonths(Filename)
% creates all required headings
data = csvread(Filename);
months = ['Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'];
fprintf('Monthly rainfall statistics\n');
fprintf('Month Total Max Mean\n');
end
function [total, mean, maxFall] = calculationLoop(data, months)
% runs a loop containing calculations for total mean and max rainfall
monthData = data(month, 3 : 33);
daysInMonth = data(month, 2);
total = sum(monthData);
mean = total / daysInMonth;
maxFall = max(monthData);
fprintf(' %3s %5.1f %5.1f %5.1f \n', months(month, 1:3), total, maxFall, mean);
end
答案 0 :(得分:2)
您没有将变量month
传递给calculationLoop
,这会导致函数调用函数内部而不是变量。