2015-03-18 3 views
0

Я изучаю matlab и практикую функциональную декомпозицию.Необходимость функционального разложения в Matlab

У меня в основном был длинный кусок кода, который работал, но я пытаюсь разбить его на более мелкие куски с поддерживающей функцией.

Я потратил возрасты отладки, и получил свою первую функцию поддержки работы «readAndPrintMonths», но у меня возникает проблемы с

сообщений об ошибках «calculationLoop» В настоящее время я является: использование

Ошибки месяц (линия 36) Пожалуйста, введите D.

Ошибка в printMonthlyStats> calculationLoop (строка 20) monthData = данные (месяц, 3: 33);

Ошибка в printMonthlyStats (строка 6) calculationLoop (данные, месяцы)

Anyhere здесь код.

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 

ответ

2

Вы не передавая переменную month в calculationLoop, которая вызывает функцию для вызова сборки в функции вместо переменной.

Смежные вопросы