A team of engineers is designing a bridge to span the Podunk
River. As part of the design process, the local flooding data must be
analyzed. The following information on each storm that has been
recorded in the last 40 years is stored in a file: a code for the location
of the source of the data, the amount of rainfall (in inches), and the
duration of the storm (in hours), in that order. For example, the file
might look like this:
321 2.4 1.5
111 3.3 12.1
etc.
Create a data file. Write the first part of the program: design a data
structure to store the storm data from the file, and also the intensity of
each storm. The intensity is the rainfall amount divided by the
duration. Write a function to read the data from the file (use load),
copy from the matrix into a vector of structs, and then calculate the
intensities. Write another function to print all of the information in a
neatly organized table.
Add a function to the program to calculate the average intensity of the
storms.
Add a function to the program to print all of the information given on
the most intense storm. Use a subfunction for this function which will
return the index of the most intense storm.
flooding.m
% Process flood data
flooddata = floodInfo;
printflood(flooddata)
calcavg(flooddata)
printIntense(flooddata)
floodInfo.m
function flood = floodInfo
% load flood information and store in vector
% Format of call: floodInfo or floodInfo()
% Returns vector of structures
load floodData.dat
[r c] = size(floodData);
for i=1:r
flood(i) = struct('source',floodData(i,1),'inches',...
floodData(i,2),'duration',floodData(i,3),...
'intensity', floodData(i,2)/floodData(i,3));
end
end
calcavg.m
function calcavg(flooddata)
% Calculates the ave storm intensity
% Format of call: calcavg(flooddata)
% Returns average storm intensity
avginten = sum([flooddata.intensity])/length(flooddata);
fprintf('The average intensity of the storms is %.4f',...
avginten);
end
printflood.m
function printflood(flooddata)
% Prints flood info
% Format of call: printflood(flooddata)
% Does not return any values
for i = 1:length(flooddata)
fprintf('Flood Source: %d\n')
fprintf('Total Rainfall (in inches): %.2f\n')
fprintf('Duration of Storm: %.2f\n')
fprintf('Intensity: %.3f\n\n', ...
flooddata(i).source, flooddata(i).inches,...
flooddata(i).duration, flooddata(i).intensity)
end
end
printIntense.m
function printIntense(flooddata)
% Prints info on most intense storm
% Format of call: printIntense(flooddata)
% Does not return any values
ind = findind(flooddata);
fprintf('\nThe most intense recorded storm began')
fprintf(' flooding at location %d.\n')
fprintf('%.2f inches of rain fell in %.2f hours\n\n',...
flooddata(ind).source, flooddata(ind).inches, ...
flooddata(ind).duration)
end
findind.m
function ind = findind(flooddata)
% Determines most intense storm
% Format of call: findind(flooddata)
% Returns index of most intense storm
intensity = [flooddata.intensity];
mostintense = intensity(1);
ind = 1;
%search for the highest intensity value
for i=1:length(intensity)
if intensity(i) > mostintense
%if higher intensity is found, save value and index
mostintense = intensity(i);
ind = i;
end
end
end
need an explanation for this answer? contact us directly to get an explanation for this answer