Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中的函数分解_Matlab_Debugging_Decomposition - Fatal编程技术网

Matlab中的函数分解

Matlab中的函数分解,matlab,debugging,decomposition,Matlab,Debugging,Decomposition,我正在学习matlab,正在练习函数分解 我基本上有一段很长的代码可以工作,但我正试图用支持函数将其分解成更小的部分 我花了很长时间调试它,我的第一个支持函数“readAndPrintMonths”正在运行,但“calculationLoop”有问题 我当前收到的错误消息包括: 使用月份时出错(第36行) 请输入D printMonthlyStats>calculationLoop中出错(第20行) monthData=数据(月份,3:33) printMonthlyStats中的错误(第6行)

我正在学习matlab,正在练习函数分解

我基本上有一段很长的代码可以工作,但我正试图用支持函数将其分解成更小的部分

我花了很长时间调试它,我的第一个支持函数“readAndPrintMonths”正在运行,但“calculationLoop”有问题

我当前收到的错误消息包括:

使用月份时出错(第36行) 请输入D

printMonthlyStats>calculationLoop中出错(第20行) monthData=数据(月份,3:33)

printMonthlyStats中的错误(第6行) 计算循环(数据,月)

这里是代码。

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

您没有将变量
month
传递到
calculationLoop
,这会导致函数调用内置函数而不是您的变量