By flat-field you mean correct the image intensities for vignetting (optical and mechanical), right?
If so provided that you're data is properly background-reduced and that your flat-field-data is the similarly back-ground reduced response to a flat illumination then it should in principle just be to divide the data with the flat-field data to correct for the variation over the image. However the sizes you give doesn't match up, which makes things confusing. I will assume that what you call data is the image in the 5 bands in sequence such that rows 1-16 corresponds to "band a", rows 17-32 to "band b" etc. Then something like this should work:
flatfield_stacked = [ff_data_bandA';ff_data_bandB';ff_data_bandC';ff_data_bandD';ff_data_bandE'];
ffc_data = data./flatfield_stacked;
You'll have to keep track of normalization and how the intensity-calibration is affected.