0
$\begingroup$

I've received my transmitted signal that I sampled it on 20480000 frequency , transmitted frequency 868MHZ , bitrate 100KHZ , I see the "bits" that Im transmitting in my plot in matlab it looks like: enter image description here

so what Im now going to do is doing LPF in the cutoff frequency = bit rate and that's in order to be able to do zero crossings, so my output signal of LPF must be like "sinusoidal", I mean by that "smearing the ups and downs that we see in the photo above to look like continues sinusoidal.

Any help how can I do that in matlab? thanks

attaching down a photo that I showed what I mean by "smearing" by dark marker.. enter image description here

eyediagram: enter image description here

$\endgroup$
9
  • $\begingroup$ It sounds like you're describing matched filtering. Do you know the pulse shaping filter that was used at the transmitter? $\endgroup$
    – Engineer
    Jul 12 '20 at 16:09
  • $\begingroup$ it's GFSK modulation $\endgroup$
    – LiamLony
    Jul 12 '20 at 16:17
  • $\begingroup$ And yeah Im describing matched filter .. and I want to do LPF in order to do zero crossings $\endgroup$
    – LiamLony
    Jul 12 '20 at 16:17
  • $\begingroup$ ANY HELP GUYS?!!!!!!!!!!!!!!!!!! $\endgroup$
    – LiamLony
    Jul 13 '20 at 15:13
  • $\begingroup$ What is the main point of the question? Is it "How do I make a low pass filter in MATLAB?"? $\endgroup$
    – Engineer
    Jul 13 '20 at 15:40
0
$\begingroup$

MATLAB has a lot of ways to design filters. You can try designfilt as a starting point: https://uk.mathworks.com/help/signal/ref/designfilt.html. You'd choose the options to set up a FIR LPF and give it your desired cutoff and other parameters (stopband attenuation, ripple allowance, method of filter design).

Choosing the cutoff frequency to be a function of the bit rate is not what you want though. Doing this will distort your signal which you are interested in. Instead, for GFSK, I'd recommend simply computing the 99, 95, or 90 percent bandwidth and setting the cutoff frequency to be half of that. MATLAB has an function called obw which gives the 99% bandwidth but you could write a function myObw(signal, percBandwidth) to calculate any percentage you'd like.

For something like this, it is a good idea to see if what you did actually makes sense. For example, plotting your filter's frequency response over the top of the signal's is a good place to start. The picture below illustrates what I mean and directly shows the problem with choosing the cutoff frequency to be half of your bit rate.

enter image description here

$\endgroup$
2
  • $\begingroup$ Thanks for that! , but there's no myObw(signal, percBandwidth) in matlab , im using matlab 2019 $\endgroup$
    – LiamLony
    Jul 14 '20 at 13:25
  • $\begingroup$ True, I said you can write a function called that $\endgroup$
    – Engineer
    Jul 14 '20 at 14:34
0
$\begingroup$

To add to the other good answer specific to designing filters, very importantly the OP must be careful to review the resulting time domain response of the filter to minimize inter-symbol interference (ISI), and design the filter with this purpose in mind specifically. Specifically the cascade of the transmitter filter and receiver filter (and the channel if it contributes distortion, but I don't see evidence of that in the OP's plots) should satisfy the Nyquist ISI criterion. (More on that here: https://www.google.com/search?q=nyquist+filtering&oq=nyquist+filtering&aqs=chrome..69i57j0.5511j1j7&sourceid=chrome&ie=UTF-8). If the transmitter and channel are not introducing ISI (as it appears to be from the plots), then in this case the receiver filter details are simplified, and the OP should design a filter such that the impulse response of the filter crosses 0 at successive symbol sampling locations, such that the time domain tails of prior symbols do not add errors to subsequent symbols. (Otherwise this design criteria is imposed on Tx+Rx, or Tx+Channel+Rx, where in the latter case channel equalization is involved).

One approach I would suggest overall is to create an eye diagram of the received symbols which can then readily show many performance metrics of the receiver waveform after filtering including ISI, jitter, SNR, etc... For further details on eye diagrams please see Eye pattern construction and interpretation

$\endgroup$
11
  • $\begingroup$ Hi I made eye diagram in matlab (succeeded!) , but what should I do now $\endgroup$
    – LiamLony
    Jul 14 '20 at 13:29
  • $\begingroup$ Read the further details in the other post I linked and ask relevant questions there if you have more. Note this isn’t a tutorial site so not sure your question can be easily answered, but you might be able to break it down into smaller concise future questions that would be more appropriate for here. $\endgroup$ Jul 14 '20 at 13:30
  • $\begingroup$ I understand you and Im totally with you but I get this and not like exactly the eyediagram pf what the other thready has, I attached and updated my eyediagram on my thread above, the eyediagram helps me to know for instance which threshold to take. $\endgroup$
    – LiamLony
    Jul 14 '20 at 13:34
  • $\begingroup$ What is your question? $\endgroup$ Jul 14 '20 at 13:36
  • $\begingroup$ my problem is that because I have the bit rate , so I have bit period in my received data , if I choose threshold zero (according to likelihood decision) then if I transmit 0 in my packet, the received packet would be 000000 and not one zero! here is my problem I don't know how much the received bit would be replicated in compare to transmitted bit. $\endgroup$
    – LiamLony
    Jul 14 '20 at 13:38

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.