Write My Paper Button

Uncategorized

CEN/EEN330 Course Project Title: Signal Mixing and Source Separation Tools: MATLAB

May 31, 2025 · 3 min read · By adminPro

📋 Table of Contents

    CEN/EEN330 Course Project
    Title:
    Signal Mixing and Source Separation
    Tools: MATLAB
    Due Date: 4 June 2025

    Project Overview

    This project introduces students to the concepts of random signal mixing and source separation through a simplified version of the Cocktail Party Problem. Using MATLAB, you will explore how signals can be mixed using a known matrix, and how they can be recovered using two statistical methods: Principal Component Analysis (PCA) and Independent Component Analysis (ICA).

    The project focuses on key probabilistic concepts such as Gaussianity, the Central Limit Theorem (CLT), statistical independence vs. correlation, and the effect of additive white Gaussian noise on signal recovery.


    Learning Objectives

    By completing this project, you will:

    • Apply MATLAB to analyze and process noisy signal data.
    • Simulate random signal mixing and investigate the role of mixing matrices.
    • Understand the impact of Gaussian noise on signal quality and recovery.
    • Compare PCA and ICA in terms of their probabilistic assumptions and performance.
    • Use histogram analysis, kurtosis, and correlation to interpret results.

    Task Breakdown

    1. Setup and Signal Mixing

    • You will be provided with source signals (.wav files), chose one voice and one music, or get your own from any source (keep them short ~few seconds).
    • Load the signals and make sure they are of the same sampling rate.
    • Normalize the signals in the range [-1,1] and do the same for each signal at each step to avoide clipping.
    • Use a predefined 2×2 mixing matrix to linearly mix the signals.
    • Add Gaussian noise to the mixed signals (one level, e.g., PSNR = 20 dB).

    2. Signal Recovery

    • Apply PCA using MATLAB’s built-in functions.
    • Apply ICA using MATLAB’s fastica() function.

    ·        Save all signals (original, mixed, ICA, PCA) as .wav files.

    3. Analysis and Comparison

    • Plot waveforms of original, mixed, and separated signals.
    • Plot histograms of the recovered signals.
    • Calculate Correlation coefficients between original and recovered signals
    • Calculate Kurtosis values of the recovered signals
    • Use results to explain why ICA can recover original signals, while PCA may fail.

    Expected Report Structure

    Section 1: Introduction

    • Brief explanation of the Cocktail Party Problem
    • Purpose of the project in the context of randomness and noise

    Section 2: Methodology

    • Description of the mixing process and noise addition
    • Overview of PCA and ICA techniques
    • Tools and MATLAB functions used

    Section 3: Results

    • Plots of mixed and separated signals
    • Histograms and statistical measures (correlation, kurtosis)

    ·        Observations on saved .wav files

    Section 4: Discussion

    • Why ICA works under the CLT and non-Gaussian assumptions
    • Why PCA fails to separate independent sources
    • How Gaussian noise affects the recovery process

    Section 5: Conclusion

    • Summary of findings
    • Relevance to course topics in EEN330

    Provided Materials

    • Source signals in .wav format
    • MATLAB starter code for signal loading, mixing, recovery and plotting
    • Template for fastica() and PCA implementation

    Submission Requirements

    • Report.
    • MATLAB code (.m files).
    • All signals in (.wav files)

    MATLAB Starter Code Snippets

    Loading a Source Signal

    [s1, fs1] = audioread(voice.wav’);

    Adjust Length of a signal

    minLen = min(length(x1), length(x2));

    x1 = x1(1:minLen);

    Convert a signal to a row vector

    x1 = x1(:)’;

    Normalize a signal to [-1,1]:

    x1 = x1 / max(abs(x1));

    Combine the voice and music signals

    S = [x1; x2];

    S = S – mean(S, 2);

    S = S ./ std(S, 0, 2);

    Mixing and Noise Addition

    A = [1 0.5; 0.4 1];

    X = A * S;

    Add Gaussian Noise

    noise_power = 0.01 * var(X, 0, 2); % Adjust scale as needed

    noise = sqrt(noise_power) .* randn(size(X));

    X_noisy = X + noise;

    Apply ICA

    r = 2;

    [Zica, ~, ~, ~] = fastICA(X_noisy, r);

    Apply PCA

    [coeff, score, ~] = pca(X_noisy’);

    pca_sig = score(:,1:2)’;

    Results Examples

    figure;

    time = (0:minLen-1) / fs1;

    subplot(4,2,5); plot(time, Zica(1,:)); title(‘Recovered Signal 1 (ICA)’);

    audiowrite(fullfile(audio_path,’ica_recovered1.wav’), Zica(1,:)’, fs1);

    fprintf(‘ICA1 vs Original Voice: %.3fn’, corr(Zica(1,:)’, S(1,:)’));

    fprintf(‘PCA Signal 1: %.3fn’, kurtosis(pca_result(1,:)));

    figure;

    subplot(4,2,1); histogram(S(1,:), 100); title(‘Histogram: Original Signal 1’);


    Need Help with Your Assignment?

    Post your brief free on TopEssay.com and post your brief free and get expert quotes in minutes.

    Get Expert Help Free →
    WeCreativez WhatsApp Support
    Our customer support team is here to answer your questions. Ask us anything!
    👋 Hi, how can I help?