Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QAM/PSK Pulse shaping filter transition bandwidth corrected #98

Merged
merged 2 commits into from
May 8, 2023

Conversation

MattCarrickPL
Copy link
Collaborator

Filter estimate previously used the excess bandwidth (ex: roll-off factor) for determining the length of the pulse shaping filter for QAM/PSK. But the excess bandwidth is within proportion to the bandwidth, not the sampling rate. For example, excess_bandwidth = 0.35 needs to be scaled by the samples per symbol, such that the transition bandwidth of the pulse shaping filter is excess_bandwidth/samples_per_symbol.

@gvanhoy gvanhoy changed the base branch from main to develop May 8, 2023 17:55
@gvanhoy gvanhoy added the bug Something isn't working label May 8, 2023
@gvanhoy gvanhoy added this to the v0.3.1 milestone May 8, 2023
@gvanhoy gvanhoy merged commit cedb8c5 into develop May 8, 2023
@gvanhoy gvanhoy deleted the filter_length_mods branch May 8, 2023 20:21
gvanhoy pushed a commit that referenced this pull request May 19, 2023
* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code
gvanhoy added a commit that referenced this pull request May 22, 2023
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version
gvanhoy added a commit that referenced this pull request Jun 13, 2023
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version

* Fix float issue (#111)

* Initial draft of restructuring transforms (#106)

* Flatten transforms to mirror torchvision/audio structure & add reprs

* Address flake8 errors

* Update transform imports with restructuring

* Formatting.

---------

* Fixing broken examples, formatting files, etc.

* Adjustments for generation speed

* Wideband generation working.

* 45 consider compatibility with torch 20 (#115)

* Seems to work

* Workflow is broken

* Python 3.7 not supported for Torch 2.0

* Adjusting test workflow

* Extracted out a method for filter design. Put DSP-only things in utils/dsp (#116)

* Benchmark and visualize wideband dataset generation. (#118)

* Extracted out a method for filter design. Put DSP-only things in utils/dsp

* New tests.

* Migrated to pytest. (#119)

* Added model instantiation tests for narrowband signals. (#120)

* 85 gmskgfsk also needs faster filtering due to convolution of long signals with gaussian pulse shape (#121)

* Change all references to convolution to scipy-based convolutions.

* Missed one.

* Add mypy workflow check and fix all mypy-found bugs (#123)

* Fix mypy in target_transforms

* Add mypy workflow for static type checking

* Fix typo in mypy.yml workflow

* Fix mypy in torchsig/transforms/functional.py

* Fix mypy in utils/types.py

* Fix mypy in torchsig/utils/

* Fix mypy in torchsig/transforms/

* Fix mypy in torchsig/datasets/

* Fix mypy in torchsig/models/

* Format with pyfmt

* Fix isinstance(x, Callable)

* Add PR template

* Adjusting module (#130)

* 131 configure package for pypi release (#132)

* Adjusting installation

* More information on pyproject.toml

* More information on pyproject.toml

* I guess some keywords in current documentation do not work :/.

* Ignore distributable artifacts

* More documentation and examples (#134)

* More documentation and examples

* Added script to train

* Remove duplicate script

* 126 create dockerfile and script for generating all versions of widebandsig53 (#135)

* Added generation script.

* Adding scripts

* Fixing mypy issue.

* 127 create test suite for visually validating transforms (#136)

* Some transforms here

* Most transforms included

---------

Co-authored-by: lboegner <luke.boegner@gmail.com>
Co-authored-by: Garrett Vanhoy <gmvanhoy@gmail.com>
Co-authored-by: MattCarrickPL <120057274+MattCarrickPL@users.noreply.github.com>
gvanhoy added a commit that referenced this pull request Jul 27, 2023
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version

* Fix float issue (#111)

* Initial draft of restructuring transforms (#106)

* Flatten transforms to mirror torchvision/audio structure & add reprs

* Address flake8 errors

* Update transform imports with restructuring

* Formatting.

---------

* Fixing broken examples, formatting files, etc.

* Adjustments for generation speed

* Wideband generation working.

* 45 consider compatibility with torch 20 (#115)

* Seems to work

* Workflow is broken

* Python 3.7 not supported for Torch 2.0

* Adjusting test workflow

* Extracted out a method for filter design. Put DSP-only things in utils/dsp (#116)

* Benchmark and visualize wideband dataset generation. (#118)

* Extracted out a method for filter design. Put DSP-only things in utils/dsp

* New tests.

* Migrated to pytest. (#119)

* Added model instantiation tests for narrowband signals. (#120)

* 85 gmskgfsk also needs faster filtering due to convolution of long signals with gaussian pulse shape (#121)

* Change all references to convolution to scipy-based convolutions.

* Missed one.

* Add mypy workflow check and fix all mypy-found bugs (#123)

* Fix mypy in target_transforms

* Add mypy workflow for static type checking

* Fix typo in mypy.yml workflow

* Fix mypy in torchsig/transforms/functional.py

* Fix mypy in utils/types.py

* Fix mypy in torchsig/utils/

* Fix mypy in torchsig/transforms/

* Fix mypy in torchsig/datasets/

* Fix mypy in torchsig/models/

* Format with pyfmt

* Fix isinstance(x, Callable)

* Add PR template

* Adjusting module (#130)

* 131 configure package for pypi release (#132)

* Adjusting installation

* More information on pyproject.toml

* More information on pyproject.toml

* I guess some keywords in current documentation do not work :/.

* Ignore distributable artifacts

* More documentation and examples (#134)

* More documentation and examples

* Added script to train

* Remove duplicate script

* 126 create dockerfile and script for generating all versions of widebandsig53 (#135)

* Added generation script.

* Adding scripts

* Fixing mypy issue.

* 127 create test suite for visually validating transforms (#136)

* Some transforms here

* Most transforms included

* Fix path in generation script

* Added dependencies in Docker (#141)

* Removed use_gpu (#142)

* Adjustments for dataset generation.

* fixing syntax error, os.root is invalid, but os.path is valid (#147)

* Working example notebooks

* Working on another platofmr

* Bumping version

---------

Co-authored-by: lboegner <luke.boegner@gmail.com>
Co-authored-by: Garrett Vanhoy <gvanhoy@peratonlabs.com>
Co-authored-by: MattCarrickPL <120057274+MattCarrickPL@users.noreply.github.com>
ereoh pushed a commit that referenced this pull request Sep 25, 2024
* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code
ereoh pushed a commit that referenced this pull request Sep 25, 2024
* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code
ereoh pushed a commit that referenced this pull request Sep 25, 2024
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version
ereoh pushed a commit that referenced this pull request Sep 25, 2024
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version

* Fix float issue (#111)

* Initial draft of restructuring transforms (#106)

* Flatten transforms to mirror torchvision/audio structure & add reprs

* Address flake8 errors

* Update transform imports with restructuring

* Formatting.

---------

* Fixing broken examples, formatting files, etc.

* Adjustments for generation speed

* Wideband generation working.

* 45 consider compatibility with torch 20 (#115)

* Seems to work

* Workflow is broken

* Python 3.7 not supported for Torch 2.0

* Adjusting test workflow

* Extracted out a method for filter design. Put DSP-only things in utils/dsp (#116)

* Benchmark and visualize wideband dataset generation. (#118)

* Extracted out a method for filter design. Put DSP-only things in utils/dsp

* New tests.

* Migrated to pytest. (#119)

* Added model instantiation tests for narrowband signals. (#120)

* 85 gmskgfsk also needs faster filtering due to convolution of long signals with gaussian pulse shape (#121)

* Change all references to convolution to scipy-based convolutions.

* Missed one.

* Add mypy workflow check and fix all mypy-found bugs (#123)

* Fix mypy in target_transforms

* Add mypy workflow for static type checking

* Fix typo in mypy.yml workflow

* Fix mypy in torchsig/transforms/functional.py

* Fix mypy in utils/types.py

* Fix mypy in torchsig/utils/

* Fix mypy in torchsig/transforms/

* Fix mypy in torchsig/datasets/

* Fix mypy in torchsig/models/

* Format with pyfmt

* Fix isinstance(x, Callable)

* Add PR template

* Adjusting module (#130)

* 131 configure package for pypi release (#132)

* Adjusting installation

* More information on pyproject.toml

* More information on pyproject.toml

* I guess some keywords in current documentation do not work :/.

* Ignore distributable artifacts

* More documentation and examples (#134)

* More documentation and examples

* Added script to train

* Remove duplicate script

* 126 create dockerfile and script for generating all versions of widebandsig53 (#135)

* Added generation script.

* Adding scripts

* Fixing mypy issue.

* 127 create test suite for visually validating transforms (#136)

* Some transforms here

* Most transforms included

---------

Co-authored-by: lboegner <luke.boegner@gmail.com>
Co-authored-by: Garrett Vanhoy <gmvanhoy@gmail.com>
Co-authored-by: MattCarrickPL <120057274+MattCarrickPL@users.noreply.github.com>
ereoh pushed a commit that referenced this pull request Sep 25, 2024
* Change README logo if in dark mode (#95)

* Start transform tests & minor `RandomTimeShift` optimization (#94)

* Start transform tests & slight optimization in RandomTimeShift

* Add new length check for TimeCrop tests

* Code style

* Fixed name mangling.

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* QAM/PSK Pulse shaping filter transition bandwidth corrected (#98)

* excess bandwidth is defined in porportion to signal bandwidth, not sampling rate, thus needs to be scaled by the samples per symbol

* filling in a comment to describe modification to code

* OFDM Modulator filter lengths estimated and bandwidth randomized (#99)

* * cutoff frequency for LPF now randomized when using 'rand_lpf'
* derives a transition bandwidth from the cutoff frequency
* uses filter length approximating function for the randomized LPF

* using filter estimation function for pre-computed LPF taps

* Tests for visual inspection. (#103)

* 91 create generation performance benchmarks for each modulation type (#104)

* Initial benchmarking code.

* Some benchmarks

* Adding initial benchmarks.

* Fix action.

---------

* 75 examine ofdm generation for potential speedups for sig53 (#105)

* Tests for visual inspection of modulation generation. (#102)

* Optimizations show significant improvement in generation speed.

* Nominal behavior after using scipy.

* Adding initial Dockerfile (#108)

* Incrementing version

* Fix float issue (#111)

* Initial draft of restructuring transforms (#106)

* Flatten transforms to mirror torchvision/audio structure & add reprs

* Address flake8 errors

* Update transform imports with restructuring

* Formatting.

---------

* Fixing broken examples, formatting files, etc.

* Adjustments for generation speed

* Wideband generation working.

* 45 consider compatibility with torch 20 (#115)

* Seems to work

* Workflow is broken

* Python 3.7 not supported for Torch 2.0

* Adjusting test workflow

* Extracted out a method for filter design. Put DSP-only things in utils/dsp (#116)

* Benchmark and visualize wideband dataset generation. (#118)

* Extracted out a method for filter design. Put DSP-only things in utils/dsp

* New tests.

* Migrated to pytest. (#119)

* Added model instantiation tests for narrowband signals. (#120)

* 85 gmskgfsk also needs faster filtering due to convolution of long signals with gaussian pulse shape (#121)

* Change all references to convolution to scipy-based convolutions.

* Missed one.

* Add mypy workflow check and fix all mypy-found bugs (#123)

* Fix mypy in target_transforms

* Add mypy workflow for static type checking

* Fix typo in mypy.yml workflow

* Fix mypy in torchsig/transforms/functional.py

* Fix mypy in utils/types.py

* Fix mypy in torchsig/utils/

* Fix mypy in torchsig/transforms/

* Fix mypy in torchsig/datasets/

* Fix mypy in torchsig/models/

* Format with pyfmt

* Fix isinstance(x, Callable)

* Add PR template

* Adjusting module (#130)

* 131 configure package for pypi release (#132)

* Adjusting installation

* More information on pyproject.toml

* More information on pyproject.toml

* I guess some keywords in current documentation do not work :/.

* Ignore distributable artifacts

* More documentation and examples (#134)

* More documentation and examples

* Added script to train

* Remove duplicate script

* 126 create dockerfile and script for generating all versions of widebandsig53 (#135)

* Added generation script.

* Adding scripts

* Fixing mypy issue.

* 127 create test suite for visually validating transforms (#136)

* Some transforms here

* Most transforms included

* Fix path in generation script

* Added dependencies in Docker (#141)

* Removed use_gpu (#142)

* Adjustments for dataset generation.

* fixing syntax error, os.root is invalid, but os.path is valid (#147)

* Working example notebooks

* Working on another platofmr

* Bumping version

---------

Co-authored-by: lboegner <luke.boegner@gmail.com>
Co-authored-by: Garrett Vanhoy <gvanhoy@peratonlabs.com>
Co-authored-by: MattCarrickPL <120057274+MattCarrickPL@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

2 participants