Skip to content

kfoysalhaque/BandWeave

Repository files navigation

BandWeave

This is the implementation of the paper BANDWEAVE: Enhanced Channel Estimation in MIMO Networks with Multi-Band Fusion.

BANDWEAVE is a multi-band CFR fusion framework for improving channel estimation quality in MIMO systems by coherently combining complementary multipath information across frequency bands.

If you find the project useful and you use this code, please cite our paper:

@inproceedings{haque2026bandweave,
  title={BANDWEAVE: Enhanced Channel Estimation in MIMO Networks with Multi-Band Fusion},
  author={Haque, Khandaker Foysal and Meneghello, Francesca and Ashdown, Jonathan and Restuccia, Francesco},
  booktitle={IEEE INFOCOM},
  pages={1--10},
  year={2026}
}

(I) We first perform a preliminary analysis to validate the core intuition.

(II) We then design a heuristic signal-processing multi-band fusion method and evaluate it in simulation.

(III) We finally introduce a 3-stage learning pipeline for robust deployment: supervised pretraining, simulation-in-the-loop fine-tuning, and online feedback-aware adaptation as presented in the following figure.

BANDWEAVE Walkthrough

Open full walkthrough (PDF)


Preliminary Tests

  1. To perform the preliminary tests, run:
cd Matlab_Simulation/Python_code/preli_analysis
python band_analysis.py

This script visualizes the CFR structure and multipath profile for the same bandwidth at different center frequencies.

  1. To analyze the CIR at two different bandwidths with the same center frequency, run:
cd Matlab_Simulation/Python_code/preli_analysis
python plot_cir_80mhz_vs_160mhz.py ../../Matlab_code/Preli_test_2_3/

This shows that different bandwidths observe similar dominant multipath components.

  1. To analyze CIRs at two different center frequencies, run:
cd Matlab_Simulation/Python_code/preli_analysis
python plot_cir_ch36_vs_163.py ../../Matlab_code/Preli_test_2_3/

This shows how the CIR structure changes across center frequencies while preserving key dominant paths.

Evaluation of Heuristic Algorithm

  1. Create the CFR dataset (office example):
cd Matlab_Simulation/Matlab_code/AX
matlab -batch "save_CFR_batch_office"
  1. Generate merged CFRs using the BANDWEAVE heuristic:
cd Matlab_Simulation/Python_code/BandWeave_Algo
python merge_CFR.py ../../original_CFR ../../merged_CFR AX office 0 1 3 5180 5845 5180

Note: in merge_CFR.py, make sure the scipy.io.savemat(...) line is enabled so merged CFR files are written.

  1. Compute BER with original CFR:
cd Matlab_Simulation/Matlab_code/AX
matlab -batch "cal_ber_original_CFR_batch"
  1. Compute BER with merged CFR:
cd Matlab_Simulation/Matlab_code/AX
matlab -batch "cal_ber_merged_CFR_batch"
  1. Compute BER improvement from merging:
cd Matlab_Simulation/Python_code/BandWeave_Algo
python Cal_BER_improve.py ../../BER AX office 0 1 3 5180 5845 5180

Learning Algorithm

The learning-code implementation is in Learning_Algo/.

  1. Make sure learning data is ready: original CFR data in Matlab_Simulation/original_CFR/ and heuristic merged CFR data in Matlab_Simulation/merged_CFR/.

  2. To run supervised pretraining (Phase 1), execute:

cd Learning_Algo
python train.py

This trains the model and saves best_model_checkpoint.pth.

  1. To run simulation-in-the-loop fine-tuning (Phase 2), execute:
cd Learning_Algo
python fine-tuning.py

This stage uses BER feedback from Matlab_Simulation/Matlab_code/AX/simulatealgo1v1.m and saves fine_tuned_model_cmaes.pth when improved.

  1. To run learning-based testbed inference, execute:
cd Learning_Algo
python execute_LA.py
  1. To run heuristic online fusion (baseline-style), execute:
cd Learning_Algo
python execute_bandweave_heuristic.py
  1. To run online feedback-aware adaptation (Phase 3), execute:
cd Learning_Algo
python OA.py \
  --input-root /path/to/input_files \
  --checkpoint-path ./fine_tuned_model_cmaes_oa.pth \
  --online-model-path ./online_model.pth \
  --run-test-cmd "bash ./run_one_iteration.sh"
  1. To measure inference latency, execute:
cd Learning_Algo
python benchmark_inference_BW.py --device auto --batch_size 1

Experiments

The Experiments/ directory contains post-processing scripts for throughput analysis.

  1. To extract throughput comparison for a given STA, execute:
python Experiments/Scripts/extract_throughput_STAX.py <experiment_path> <sta_index>

Example:

python Experiments/Scripts/extract_throughput_STAX.py ../Dataset/Non-Contiguous_2Band/Classroom/Movement/ 1
python Experiments/Scripts/extract_throughput_STAX.py ../Dataset/Non-Contiguous_2Band/Classroom/Movement/ 2
  1. To calculate average throughput gain for a given STA, execute:
python Experiments/Scripts/cal_gain.py <experiment_path> <sta_index>

Example:

python Experiments/Scripts/cal_gain.py ../Dataset/Non-Contiguous_2Band/Classroom/Movement/ 1
python Experiments/Scripts/cal_gain.py ../Dataset/Non-Contiguous_2Band/Classroom/Movement/ 2

For any further information, please contact Foysal Haque at haque.k@northeastern.edu.

About

BandWeave: Enhanced channel estimation in MIMO networks with multi-band CFR fusion (INFOCOM 2026 Best Paper).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors