Single precision equivalent to the Electrical RMS and Mean blocks

1 visualizzazione (ultimi 30 giorni)
Hi,
I am trying to generate C code from a Simulink model, in order to run it on an embedded platform. This platform can only use its hardware acceleration when dealing with single precision floats, meaning that the execution time for double precision computations is (unsurprisingly) atrocious.
Unfortunately, the model features two types of block that appear unable to work with single precision: the RMS and Mean blocks from the “Electrical” library. Would you know of any single precision compatible blocks that could offer an alternative?
Thanks in advance.
  1 Commento
Segmentation Fault
Segmentation Fault il 4 Mag 2022
Not finding any better alternative, we ended up re-implementing the Mean block using a cycling array, and the RMS using the similarly named (although not expecting the same form of input) RMS block from the "DSP" library, which does support single precision.

Accedi per commentare.

Risposta accettata

Joel Van Sickel
Joel Van Sickel il 5 Mag 2022
Hello Segmentation Fault:
You are correct, those blocks (in the Simscape Electrical library) are implemented intended primarily for desktop analysis, not hardware implementation. This is fairly typical for Simulink blocks in the Simscape Libraries, while blocks in the DSP libraries, motor control blockset, etc, will be geared more toward optimal code generation. Your approach is the correct the approach and I'm pasting it into the answers so people will see it. Thank you for updating your question with the self-found solution.
Solution found by Segmentation Fault: Not finding any better alternative, we ended up re-implementing the Mean block using a cycling array, and the RMS using the similarly named (although not expecting the same form of input) RMS block from the "DSP" library, which does support single precision.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by