Matlab中需要功能分解建议

时间:2015-03-18 22:45:53

标签: matlab debugging decomposition

我正在学习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

1 个答案:

答案 0 :(得分:2)

您没有将变量month传递给calculationLoop,这会导致函数调用函数内部而不是变量。