<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md Sajib Pramanic</title>
    <description>The latest articles on DEV Community by Md Sajib Pramanic (@sajibpra).</description>
    <link>https://dev.to/sajibpra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3477154%2Faab7ab24-9402-4764-a324-13aea4841706.png</url>
      <title>DEV Community: Md Sajib Pramanic</title>
      <link>https://dev.to/sajibpra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sajibpra"/>
    <language>en</language>
    <item>
      <title>Exploring Discrete-Time Signals with MATLAB</title>
      <dc:creator>Md Sajib Pramanic</dc:creator>
      <pubDate>Wed, 17 Sep 2025 20:45:08 +0000</pubDate>
      <link>https://dev.to/sajibpra/exploring-discrete-time-signals-with-matlab-6j</link>
      <guid>https://dev.to/sajibpra/exploring-discrete-time-signals-with-matlab-6j</guid>
      <description>&lt;p&gt;When we talk about Digital Signal Processing (DSP), we often start with signals. A discrete-time signal is at the heart of many technologies around us. From IoT devices that collect sensor readings, to AI systems that analyze audio and images, signals help us represent, process, and make sense of real-world data. I learned that understanding these signals gives us the foundation to build smarter and more efficient systems.&lt;/p&gt;

&lt;p&gt;In this post, I will walk through some basic discrete-time signals, show how I implemented them in MATLAB, and reflect on what we can learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unit Impulse Signal
&lt;/h2&gt;

&lt;p&gt;The unit impulse has value 1 at n=0 and 0 elsewhere. It is useful to test system response.&lt;/p&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F189tic5f5l3f4w66f9p7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F189tic5f5l3f4w66f9p7.png" alt=" " width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Unit Step Signal
&lt;/h2&gt;

&lt;p&gt;The unit step signal stays 0 for negative values and 1 from n=0 onward. I use it to represent sudden switching in systems.&lt;/p&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju10byswmmqtoeobnj72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju10byswmmqtoeobnj72.png" alt=" " width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ramp Signal
&lt;/h2&gt;

&lt;p&gt;The discrete ramp increases linearly with time. I see it often in modeling growth or incremental processes.&lt;/p&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8xj4m6b5vd6poi8wiei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8xj4m6b5vd6poi8wiei.png" alt=" " width="800" height="752"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Exponential Signal
&lt;/h2&gt;

&lt;p&gt;An exponential signal grows or decays depending on the base. I learned that it is useful for modeling charging/discharging or population growth.&lt;/p&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1floqm8zzg7gjsvjbmvj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1floqm8zzg7gjsvjbmvj.png" alt=" " width="800" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Signum Function
&lt;/h2&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkj4whor4xim2b0w25fo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkj4whor4xim2b0w25fo.png" alt=" " width="800" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sinusoidal Signal
&lt;/h2&gt;

&lt;p&gt;The sinusoidal signal oscillates between positive and negative values. We see it everywhere in communication and control systems.&lt;/p&gt;

&lt;p&gt;MATLAB Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8pewmtwxja346he4xd5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh8pewmtwxja346he4xd5.png" alt=" " width="800" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;By plotting and analyzing these signals, I now understand how discrete-time differs from continuous-time signals. A continuous signal flows smoothly, while a discrete signal has distinct sample points. This difference is critical in digital systems because computers and IoT devices only work with discrete values.&lt;/p&gt;

&lt;p&gt;We, as learners or developers, should remember that DSP is not just theory. It powers real-world applications like speech recognition, medical imaging, and smart sensors in AI systems. By practicing with MATLAB, I can visualize these signals and connect the math with practical uses.&lt;/p&gt;

&lt;p&gt;I believe that once you get comfortable with these basics, you will see DSP everywhere in your phone, car, or even in the devices at home.&lt;/p&gt;

&lt;p&gt;Explore the GitHub code: &lt;a href="https://github.com/SAJIB3489/mathematical-algorithms/tree/main/week3-discrete-signals-matlab" rel="noopener noreferrer"&gt;Discrete-time signals&lt;/a&gt;&lt;/p&gt;

</description>
      <category>matlab</category>
    </item>
    <item>
      <title>Basic Signals in MATLAB for IoT and AI</title>
      <dc:creator>Md Sajib Pramanic</dc:creator>
      <pubDate>Wed, 17 Sep 2025 20:00:50 +0000</pubDate>
      <link>https://dev.to/sajibpra/basic-signals-in-matlab-for-iot-and-ai-1k0k</link>
      <guid>https://dev.to/sajibpra/basic-signals-in-matlab-for-iot-and-ai-1k0k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As IoT, data, and AI engineers, we often deal with raw signals coming from sensors, devices, or communication systems. These signals are the foundation of everything we analyze, process, and use to make smart decisions. If we do not understand the basic signals, it becomes difficult to design reliable systems for data collection, filtering, or control. That is why I started learning how to generate and visualize fundamental continuous-time signals in MATLAB.&lt;/p&gt;

&lt;h2&gt;
  
  
  Walkthrough
&lt;/h2&gt;

&lt;p&gt;I wrote a simple MATLAB script to generate six basic signals: unit impulse, unit step, unit ramp, exponential, signum, and sinc. These signals are like the alphabet of signal processing. Once you know them, you can combine them to build more complex systems.&lt;/p&gt;

&lt;p&gt;In the code, I used the &lt;code&gt;t&lt;/code&gt; variable to represent time, ranging from -5 to 5. Then I defined each signal using mathematical conditions or MATLAB’s built-in functions. For example, the unit step was defined with &lt;code&gt;double&lt;/code&gt;(t&amp;gt;=0)`&lt;code&gt;and the exponential signal with exp&lt;/code&gt;(a*t)&lt;code&gt;. I used&lt;/code&gt;plot()&lt;code&gt;and&lt;/code&gt;stem()` to visualize them.&lt;/p&gt;

&lt;p&gt;Here is the MATLAB output for each signal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3wn8pblqioad9r61dnk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr3wn8pblqioad9r61dnk.jpg" alt=" " width="800" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;From this exercise, I learned how to represent and visualize the most common signals that appear in IoT and communication systems. The impulse helped me understand how systems respond instantly, while the step and ramp showed me how systems behave with sudden or gradual inputs. The exponential signal reminded me of natural processes like charging a capacitor or signal decay. The signum and sinc signals taught me about symmetry and oscillations in communication theory.&lt;/p&gt;

&lt;p&gt;I now see how these basic signals are directly connected to real-world IoT systems. For example, when a sensor suddenly starts sending data, that is similar to a step function. When data decays over time, it looks like an exponential. By practicing with MATLAB, I feel more confident in connecting theory with the real IoT problems we solve every day.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>iot</category>
      <category>matlab</category>
    </item>
    <item>
      <title>From Analog to Digital: Signal Simulation</title>
      <dc:creator>Md Sajib Pramanic</dc:creator>
      <pubDate>Sat, 06 Sep 2025 22:08:35 +0000</pubDate>
      <link>https://dev.to/sajibpra/from-analog-to-digital-signal-simulation-31h1</link>
      <guid>https://dev.to/sajibpra/from-analog-to-digital-signal-simulation-31h1</guid>
      <description>&lt;p&gt;Have you ever wondered how your music, voice calls, or even video streams travel from the physical world into the digital devices we use every day? The answer lies in &lt;strong&gt;signal processing&lt;/strong&gt; the art of converting an analog signal into a digital one.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk you through a simple MATLAB simulation where I generate an analog sine wave, sample it, quantize it, and finally encode it into binary form. By the end, you’ll see how an analog signal transforms step by step into a digital stream.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Generating an Analog Signal
&lt;/h2&gt;

&lt;p&gt;Let’s start with a simple sine wave of 100 Hz. Since MATLAB doesn’t truly handle “continuous” signals, I approximate it with a very fine time step:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight matlab"&gt;&lt;code&gt;&lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.0001&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;       &lt;span class="c1"&gt;% very fine step (continuous-like time)&lt;/span&gt;
&lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                 &lt;span class="c1"&gt;% frequency = 100 Hz&lt;/span&gt;
&lt;span class="n"&gt;x_analog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;pi&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;plot&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x_analog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'LineWidth'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mf"&gt;1.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Analog Signal (Sine Wave)'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives me the smooth curve — my &lt;strong&gt;reference signal&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Sampling
&lt;/h2&gt;

&lt;p&gt;According to the &lt;strong&gt;Nyquist theorem&lt;/strong&gt;, I need to sample at least twice the frequency of the signal (≥ 200 Hz).&lt;/p&gt;

&lt;p&gt;I tested three cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;150 Hz (below Nyquist)&lt;/strong&gt; → aliasing and distortion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;200 Hz (at Nyquist)&lt;/strong&gt; → minimal capture, jagged&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;500 Hz (above Nyquist)&lt;/strong&gt; → clean sampling, closer to analog
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight matlab"&gt;&lt;code&gt;&lt;span class="n"&gt;Fs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;% try 150, 200, and 500&lt;/span&gt;
&lt;span class="n"&gt;Ts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Fs&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;Ts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.01&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;x_sampled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;sin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nb"&gt;pi&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nb"&gt;stem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x_sampled&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'filled'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;title&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Sampled Signal at Fs = '&lt;/span&gt; &lt;span class="nb"&gt;num2str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Fs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="s1"&gt;' Hz'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Quantization
&lt;/h2&gt;

&lt;p&gt;Next, I map the sampled values to discrete amplitude levels. Using more bits increases the number of levels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;8 bits&lt;/strong&gt; → 256 levels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;16 bits&lt;/strong&gt; → 65,536 levels&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;64 bits&lt;/strong&gt; → practically continuous
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight matlab"&gt;&lt;code&gt;&lt;span class="n"&gt;bits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;% try 8, 16, and 64&lt;/span&gt;
&lt;span class="n"&gt;levels&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;bits&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;x_min&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_sampled&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;x_max&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;max&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_sampled&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;q_step&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_max&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;x_min&lt;/span&gt;&lt;span class="p"&gt;)/&lt;/span&gt;&lt;span class="n"&gt;levels&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="n"&gt;x_index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;x_sampled&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;x_min&lt;/span&gt;&lt;span class="p"&gt;)/&lt;/span&gt;&lt;span class="n"&gt;q_step&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;x_quantized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_index&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;q_step&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;x_min&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nb"&gt;stem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x_quantized&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'filled'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;title&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'Quantized Signal ('&lt;/span&gt; &lt;span class="nb"&gt;num2str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bits&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="s1"&gt;'-bit)'&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With fewer bits, you can clearly see stair-step distortions. As I increase the bits, the quantized signal becomes almost identical to the sampled one.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Encoding
&lt;/h2&gt;

&lt;p&gt;Finally, each quantized value is represented as a binary word. For example, with 8 bits, each sample becomes an 8-bit binary code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight matlab"&gt;&lt;code&gt;&lt;span class="n"&gt;binary_codes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;dec2bin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bits&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nb"&gt;disp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;binary_codes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,:));&lt;/span&gt;   &lt;span class="c1"&gt;% first 10 codes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When concatenated, they form a &lt;strong&gt;digital bitstream&lt;/strong&gt; — the format that computers and communication systems love.&lt;/p&gt;




&lt;h2&gt;
  
  
  Points
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;If you sample &lt;strong&gt;below Nyquist&lt;/strong&gt;, you risk losing information (aliasing).&lt;/li&gt;
&lt;li&gt;Increasing sampling rate improves signal quality but costs more data.&lt;/li&gt;
&lt;li&gt;More quantization bits reduce distortion, but increase storage and bandwidth.&lt;/li&gt;
&lt;li&gt;At the end, your “smooth” analog wave becomes a long sequence of &lt;strong&gt;1s and 0s&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;You can try experimenting with different frequencies and bit depths in your own code. It’s the best way to see how analog signals become digital and to appreciate the balance between accuracy and efficiency in real-world systems.&lt;/p&gt;

</description>
      <category>matlab</category>
    </item>
  </channel>
</rss>
