Hi Imad,

Thanks very much for your reply. Unfortunately that solution does not work.

Because if it reads 4 bytes (two int16_t in C/C++ parlance; <i2 in numpy world) which for argument sake holds 15, 16 (which are integers). These are then cast as floats which makes them 15.0 and 16.0 and then when viewed as np.complex64 becomes 15.0 + 16.0j.


I have had a look at the converters section in the uhd API (https://github.com/EttusResearch/uhd/tree/master/host/lib/convert) but can't get my head around the code.


Thanks.

On 06/09/2019 10:26, usrp-users@lists.ettus.com wrote:

Hi Joeal,


You may try something along the lines of:


import numpy as np

def read_from_file(file_name, count=-1):
    dt = np.dtype('<i2')
    samples = np.fromfile(file_name, dt, count).astype(np.float32).view(np.complex64)
    return samples


So this reads samples as two-byte integers (assuming little-endianness, hence the '<'), cast them to four-byte floats, and then view the resulting array as an array of eight-byte I/Q complex samples.


Imad


On 05/09/2019 22:51, Joeal Subash via USRP-users wrote:

Hi Michael,


I am having to save as ' sc16' because of storage restrictions using a C++ program. I specifically need details on how to convert 'sc16' to float. Thanks.

------------------------------------------------------------------------
*From:* michael.dick...@ettus.com <michael.dick...@ettus.com>
*Sent:* 05 September 2019 19:33:46
*To:* Joeal Subash (Electronic, Electrical and Systems Engineering)
*Cc:* USRP list
*Subject:* Re: [USRP-users] sc16 - complex<int16_t> to numpy float
Hi JS - Maybe check out this Python example from UHD < https://github.com/EttusResearch/uhd/blob/master/host/examples/python/rx_to_file.py > ... it does Rx to file, and can save as NumPy format ... which could then presumably be easily read back into NumPy. - MLD

On Thu, Sep 5, 2019 at 11:08 AM J Subash via USRP-users <usrp-users@lists.ettus.com <mailto:usrp-users@lists.ettus.com>> wrote:

    Hi,

    I am using a B200 to save samples on the host as 'short' (as
    described in the uhd <https://github.com/EttusResearch/uhd>/host
    <https://github.com/EttusResearch/uhd/tree/master/host>/examples
    
<https://github.com/EttusResearch/uhd/tree/master/host/examples>/rx_samples_to_file.cpp),
    which I believe is complex<int16_t>.

    I'd like to import this data into numpy and then convert it into
    floating point values. Is sc16 a fixed point representation, if
    yes what is the scaling factor. If no, how do I convert it into a
    numpy float in Python. Any help would be much appreciated. Thanks.

    BW

    JS

    _______________________________________________
    USRP-users mailing list
    USRP-users@lists.ettus.com <mailto:USRP-users@lists.ettus.com>
    http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com



--
Michael Dickens, Mac OS X Programmer

Ettus Research Technical Support

Email: supp...@ettus.com <mailto:supp...@ettus.com>

Web: http://www.ettus.com

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

--
Joel

Joeal Subash
Research Fellow

Space Environment and Radio Engineering (SERENE) Group
LF04, Mechanical engineering building
University of Birmingham
Edgbaston Birmingham B15 2TT

j.sub...@bham.ac.uk

_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to