discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to add a non-fixed number of 0s?


From: Marcus Müller
Subject: Re: How to add a non-fixed number of 0s?
Date: Thu, 9 Dec 2021 14:26:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0

Hi Linge,

no, as explained before, input lengths are not fixed.

You cannot produce a different amount of output than you consume from the input in a sync block, that is the point of the sync block!

https://wiki.gnuradio.org/index.php/BlocksCodingGuide#Block_types

You need a "Basic Block" instead.

Best regards,
Marcus

On 09.12.21 14:11, 能书能言 wrote:
Hi,
I want to add a certain number of 0s to the input, but I don’t know the specific number of 0s. I wrote a python block to complete this work, but I don’t seem to understand how the Python block works, which causes it to not work properly. code show as below:

class...
         self.k = k
         self.total = 0
     def work(self, input_items, output_items):
         in0 = input_items[0]
         out = output_items[0]
         in0_len = len(in0)
         self.total = self.total + in0_len
         i = 0
         while i<in0_len:
             out[i] = in0[i]
             i=i+1
if in0_len < len(output_items[0]):#I found that this sentence does not work. My previous understanding is that each "input_items" and "output_items" has a fixed value (4096). I need to determine that the input item has ended, and then enter the following operation
             remainder1 = self.total % self.k
             if remainder1 != 0:
                 while True:
                     out = np.append(out, 0)
                     self.total =self.total+1
                     remainder2 = self.total % self.k
                     i = i+1
                     if i==len(output_items[0]) or remainder2==0:
                         break
         return len(output_items[0])
I think my problem is that this is a synchronized block, the number of input and output is the same, so it is never possible to enter the "if" statement, but I don't know what mechanism should I use to make the number of input and output inconsistent, "interpolation block "The output is a multiple of the input, and it cannot be used by me. How can I solve this problem, thank you in advance!
Best Regards,
linge93



reply via email to

[Prev in Thread] Current Thread [Next in Thread]