Dear Hailey Lee,
the interesting output from the feedback function is UE_output(uu).CQI. This gives you the CQI value that is supported on each resource block (RB) and it will vary over time and frequency. This CQI feedback is then used by the scheduler for RB allocation. As soon as the RBs are allocated, we have to find a modulation and coding scheme that is suitable for transmission over the allocated RBs. This requires averaging over the CQIs of the allocated RBs. For example, if 2 RBs are allocated, one having CQI value 4 the other having CQI value 6, the system might be able to transmit with CQI value 5 over both RBs. This is why the actual CQI employed for transmission is different from the feedback.