Communications Systems Design with MATLAB

Houman Zarrinkoub, Development Manager Peter Sheridan, Senior Account Manager

© 2014 The MathWorks, Inc. 1

Visit The MathWorks Web Site

Visit www.mathworks.com/academia

2

MATLAB Releases

Visit http://www.mathworks.com/products/matlab/whatsnew.html

3

mathworks.Learning Resources  Interactive Video Tutorials – Students learn the basics outside of the classroom with self-guided tutorials provided by The MathWorks – – – – – MATLAB Simulink Signal Processing Control Systems Computational Math Visit www.com/academia/student_center/tutorials 4 .

Self-Paced Training      Immediate access (90 days) Learn at your own pace Use features and workflows that are considered best practices Hands-on MATLAB experience Online discussion boards and live trainer chats Available on demand:   MATLAB Fundamentals .pp MATLAB Programming Techniques $150.pp 5 .$200.

mathworks. Simulink models.com/matlabcentral 6 .000 visits per month Upload/download free files including MATLAB code. comment.MATLAB Central  Open exchange for the MATLAB and Simulink user community – 662. and documents Rate files. and ask questions Web forum and newsgroup for technical discussions about MATLAB and Simulink Read posts from key MathWorks developers who design and build the products  File Exchange – –  Newsgroup –  Blogs – Visit www.

mathworks.MATLAB Central Visit www.com/matlabcentral 7 .

web development.my/EDGcareer 8 . signal processing. apply at: matlab.Accelerate your career at MathWorks If you have a strong technical background in software design. or embedded systems. this is the place for you! To launch your career now. control theory.

Student Version    MATLAB Simulink 10 popular add-on products – – – – – – – – – – Control System Toolbox Data Acquisition Toolbox DSP System Toolbox Image Processing Toolbox Instrument Control Toolbox Optimization Toolbox Signal Processing Toolbox Simulink Control Design Statistics Toolbox Symbolic Math Toolbox 9 .

com/training Visit www.mathworks.com/academia • Public Training & E-Learning: (50% EDU Discount) www.mathworks.mathworks.sheridan@mathworks.com 508-647-7176 • Academic Community: www.Further Information • Contact Information: Peter Sheridan peter.com/ 10 .

11 . Product Manager LTE & Communications Systems houmanz@mathworks.com © 2014 The MathWorks.Communications Seminar Houman Zarrinkoub PhD. Inc.

Agenda  Baseband signal processing – Case study: 802.11n/ac/ad as MIMO-OFDM Systems  Accelerating Communications Simulations – Case study: LTE PDCCH processing 12 .

Another resource 13 .

Baseband signal processing © 2014 The MathWorks. Inc. 14 .

What we learn today – Understand MIMO-OFDM systems – Examine family of WIFI standards (802.11x) as a MIMO-OFDM system – Effects of OFDM on bandwidth flexibility – Effects of beamforming on higher performance – How to evaluate system performance with presence of interference . large.and small-scale fading. noise – Link adaptation with modulation and coding changing based on channel conditions 15 .

Why look at MIMO-OFDM systems? 16 .

80. 540} {6. 2.11ad … … … … f 17 .What does MIMO-OFDM offer? Broadband Wireless Communications High data rates Flexibility in frequency resource WiFi standard 802. 40.5. 13.11ac Fc (GHz) {5.75} H(f) 802.5.4} 5 60 BW (MHz) {20. 6756.5. 160} 2160 Data rate (Mbps) {6. 40} {20. 6240} {385. ….11n 802. ….5. …. 13.

. .How does a MIMO-OFDM System work? Transmitter Input bits Channel coding Modulation MIMO . . Large-scale fading (path-loss …) Small-scale fading (Multipath. Doppler effects) Interference Channel Receiver Output bits Channel decoding Demodulation MIMO Receiver (Equalizer) Channel estimation Noise OFDM receiver … … … … OFDM receiver 18 .

OFDM • Multicarrier transmission scheme • Subdivide wideband channel into multiple narrowband orthogonal sub-channels (subcarriers) • Enables Flexible transmission bandwidths (BW) • Robust to multipath fading • High spectral efficiency • Low-complexity implementation • Works with MIMO transmission 19 .

pilots and control signals • Pilots are pre-determined samples used for channel estimation • In frequency.OFDM implementation • Modulated symbols organized in a time-frequency grid • Grid is composed of data. symbols align with subcarriers • Subcarriers are multiples of frequency spacing • OFDM modulation is essentially an Inverse Fourier Transform (IFFT) plus … • Cyclic Prefix (CP) insertion: Append last N samples to the beginning • CP insertion ensures orthogonality among frames at the receiver =subcarriers = 2 pilots +3 1 OFDM symbol = n /2 = =−/2 < ≤ + ( + ) 1 ≤ ≤ OFDM modulated symbols 20 .

75 Up to 4 substreams Up to 8 substreams (Optional) Beamforming 21 . Data rate (Mbps) 540 6240 6756.11ac 802.11ad MIMO Max.MIMO • Class of Multi-antenna techniques • Advantages of MIMO techniques • Boosting overall data rates • Increasing reliability of communication link • Various types of MIMO/SIMO • Receive diversity • Transmit diversity • Beamforming • Spatial multiplexing WiFi standard 802.11n 802.

each substream is steered to a different direction Beamforming Transmit diversity Layer mapping  Precoding     MIMO precoding in Beamforming Spatial multiplexing 22 .MIMO implementation MIMO layer mapping in Essentially composed of 2 steps   Layer mapping Precoding Splits modulated symbol stream into multiple substreams Transforms (scales) substreams In beamforming provides beamsteering In transmit diversity it creates orthogonal codes In spatial multiplexing.

Channel modeling & propagation scenarios (1) Mobile context (WiMAX or LTE) Multipath fading Interfering Base station pathloss Signal Base station pathloss 23 .

Channel modeling & propagation scenarios (2) Stationary context (WiFi) Multipath fading pathloss Signal source pathloss Interference source 24 .

IQ imbalance Channel estimation & Equalization Antenna arrays & directional propagation Beamforming & beamsteering … 25 .Challenges in design and evaluation of MIMOOFDM systems – – – – Performance evaluation with realistic channel models Large scale simulations Transceiver system responding to dynamic channel conditions Evaluating the combined effects of  Fading channels        Interfering signals Non-linearities front-end receivers Phase noise. Timing mismatch. Frequency offset.

Demonstration: 802.11x – Beamforming as a MIMO technique    Easy-to-follow end-to-end simulation Graphical test bench Adjustment of channel characteristics on the fly 26 .11n/ac/ad as a MIMO-OFDM system  Step-by-step MATLAB demo – OFDM as the air interface technology of 802.

Baseband demo workflow 27 .

coding.Modulation and Coding Transceiver with modulation. scrambling (No OFDM or MIMO yet)  Channel (Interferer + path loss) (No multipath fading yet)  Isotropic (non-directional) antennas  Antenna configuration (1x1)  Signal Source (S) Interference Source (I) 28 .Version 1: Baseline .

coding.11x Transceiver with modulation. scrambling & OFDM transmitter & receiver Channel (Interferer + path loss) (No multipath fading yet) Interference Source (I) Signal Source (S) 29 .Version 2: Baseline + OFDM    Introduce OFDM transmission of 802.

Version 3: Baseline + OFDM + Receiver-side beamforming     Introduce Receive-side beamforming Transceiver with modulation. OFDM transmitter & receiver & Receive diversity SIMO (receiver beamforming) Channel with Interferer + path loss (No multipath fading yet) Receiver has multiple Antennas (1 to 8) Interference Source (I) Signal Source (S) 30 . coding. scrambling.

Version 4: Baseline + OFDM + Receiver-side beamforming + Multipath fading     Introduce Receive-side beamforming with Multipath fading Transceiver with modulation. coding. scrambling. OFDM transmitter & receiver & Receive diversity SIMO (receiver beamforming) Channel with Interferer + path loss + fading Receiver has multiple Antennas (1 to 8) Interference Source (I) Signal Source (S) 31 .

coding. scrambling. MIMO-OFDM transmitter & receiver Channel with Interferer + path loss + fading Transmitter has multiple Antennas (1 to 8) Interference Source (I) Signal Source (S) 32 .Version 5: Baseline + OFDM + Transmit-side beamforming + Multipath fading     Introduce Transmit-side beamforming with Multipath fading Transceiver with modulation.

Version 6: Baseline + OFDM + Multiuser Transmit-side beamforming + Multipath fading     Introduce Steered transmission(s) in base station (OFDMA) Transceiver with modulation. MIMO-OFDM transmitter & receiver Channel with Interferer + path loss + fading Transmitter has multiple Antennas (1 to 8) Interference Source (I) Signal Source (S) 33 . coding. scrambling.

coding. MIMO-OFDM transmitter & receiver Channel with Interferer + path loss + fading Transmitter has multiple Antennas (1 to 8) Interference Source (I) Signal Source (S) 34 .Version 7: Baseline + OFDM + MIMO beamforming + Multipath fading     Introduce MIMO beamforming (both Tx-side and Rx-side) Transceiver with modulation. scrambling.

Coding. OFDM. Beam steering  DSP System Toolbox – Mapping User interface parameters into MATLAB parameters instantaneously. Visualizations and Measurements  Phased Array System Toolbox – Beamforming. MIMO Fading Channels.What MathWorks product features did we highlight  Communications System Toolbox – Modulation. Spectral Analysis  MATLAB – Live interactive MATLAB testbenches  (Optionally) Computer Vision System Toolbox – Providing live data feeds of telemetry data as transmitted bit stream 35 .

What else can MATLAB do to help with communications system modeling  Large scale BER. Throughput computations – – Parallel Processing Toolbox MATLAB Coder (Genrating C code for design bottlenecks) Synchronization. Frequency offset. IQ imbalance  Analysis of link impairments – 36 . Block Error Rate. Timing mismatch. Phase noise.

Inc. 37 .Accelerating Communications System Simulations in MATLAB © 2014 The MathWorks.

Why simulation acceleration?  From algorithm exploration to system design – – – – Size and complexity of models increases Time needed for a single simulation increases Number of test cases increases Test cases become larger  Need to reduce – simulation time during design – simulation time for large scale testing during prototyping 38 .

MATLAB is quite fast  Optimized and widely-used libraries – BLAS Basic Linear Algebra Subroutines (multithreaded) – LAPACK Linear Algebra Package  JIT (Just In Time) Acceleration – On-the-fly multithreaded code generation for increased speed  Built-in support for vector and matrix operations 39 .

Application LTE Physical Downlink Control Channel (PDCCH) 40 .

Workflow    Start with a baseline algorithm Profile it to introduce a performance yardstick Introduce the following optimizations: – – – – – – Better MATLAB serial programming techniques Using System objects MATLAB to C code generation (MEX) Parallel Computing GPU-optimized System objects Rapid Accelerator mode of simulation in Simulink 41 .

Simulation acceleration options in MATLAB Better MATLAB code System objects User’s Code MATLAB to C Parallel Computing GPU processing 42 .

Profiling MATLAB algorithms  Profiler summarizes MATLAB code execution – total time spent within each function – which lines of code use the most processing time  Helps identify algorithm bottlenecks 43 .

Effective MATLAB programming techniques Example of pre-allocation y=[].G]. y(idx2. y(idx2.1)=u(idx1). end y=complex(zeros(LEN. for n=1:LEN/Tx G=[u(idx1(n)) u(idx2(n)).. -conj(u(idx2(n))) conj(u(idx1(n)))].  Pre-allocation – Initialize an array using its final size – Helps avoid dynamically resizing arrays in a loop  Vectorization – Convert code from using scalar loops to using matrix/vector operations – Helps MATLAB leverage processor-optimized libraries for vector processing 44 . y(idx1. y(idx1.2)=u(idx2).1)=-conj(u(idx2)).Tx)). y=[y.2)=conj(u(idx1))...

'NumReceiveAntennas'. u.Using System objects of DSP & Communications System Toolboxes Example of System objects function s = Alamouti_DecoderS(u. H).OSTBCCombiner(.2.   System objects facilitate stream processing Can accelerate simulation because – Decouple declaration from the execution of the algorithms – Reduce overhead of parameter handling in the loop – Most of them implemented as MATLAB executables (MEX) 45 ..2).. 'NumTransmitAntennas'.H) %#codegen % STBC Combiner persistent hTDDec if isempty(hTDDec) hTDDec= comm. end s = step(hTDDec.

MATLAB to C code generation MATLAB Coder     Automatically generate a MEX function Call the generated MEX file within testbench Verify same numerical results Assess the baseline function and the generated MEX function for speed 46 .

Parallel Simulation Runs Worker TOOLBOXES BLOCKSETS Worker Worker Worker Task 1 Task 2 Task 3 Task 4 Time >> Demo Time 47 .

Summary
   

matlabpool  available workers No modification of algorithm Use parfor loop instead of for loop Parallel computation or simulation leads to further acceleration More cores = more speed

48

Simulation acceleration options in MATLAB

Better MATLAB code

User’s Code

System objects

MATLAB to C

Parallel Computing

GPU processing
49

What is a Graphics Processing Unit (GPU)

Originally for graphics acceleration, now also used for scientific calculations Massively parallel array of integer and floating point processors – Typically hundreds of processors per card – GPU cores complement CPU cores Dedicated high-speed memory

50

Why would you want to use a GPU?   Speed up execution of computationally intensive simulations For example: – Performance: A\b with Double Precision 51 .

Options for Targeting GPUs 1) Use GPU with MATLAB built-in functions Greater Control Ease of Use 2) Execute MATLAB functions elementwise on the GPU 3) Create kernels from existing CUDA code and PTX files 52 .

Data Transfer between MATLAB and GPU % Push data from CPU to GPU memory Agpu = gpuArray(A) % Bring results from GPU memory back to CPU B = gather(Bgpu) 53 .

ViterbiDecoder comm.PSKDemodulator comm.gpu.gpu.LDPCDecoder comm.TurboDecoder comm.gpu.AWGNChannel    54 .gpu.gpu.GPU Processing with Communications System Toolbox  Alternative implementation for many System objects take advantage of GPU processing Use Parallel Computing Toolbox to execute many communications algorithms directly on the GPU Easy-to-use syntax Dramatically accelerate simulations GPU System objects comm.

… 55 .Example: Turbo Coding    Impressive coding gain High computational complexity Bit-error rate performance as a function of number of iterations = comm. numIter.TurboDecoder(… ‘NumIterations’.

Acceleration with GPU System objects Version Elapsed time Acceleration CPU 8 hours 1.… = (… (… = comm.0 1 GPU Cluster of 4 GPUs 40 minutes 11 minutes 12.TurboDecoder ‘ ‘NumIterations NumIterations’.… .AWGNChannel 56 .gpu. ’.TurboDecoder comm.AWGNChannel comm.0  Same numerical results = (… (… = comm.gpu.0 43. N N.

13).. 'Variance')..poly2trellis(4. % Turbo Decoder hTDec = comm.*rData. % BER measurement hBER = comm. intrlvrIndices. llrData). 'Variance'). rData = step(hAWGN. % BER measurement hBER = comm..Key Operations in Turbo Coding Function CPU % Turbo Encoder hTEnc = comm. [13 15]. [13 15]. Add noise to real bipolar data modout = 1-2*yEnc..poly2trellis(4.TurboEncoder('TrellisStructure'. numIter). %initialize BER output %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) data = randn(blkLength.poly2trellis(4. intrlvrIndices) % AWG Noise hAWGN = comm. decData).5. 'InterleaverIndices'. % Turbo Decoder hTDec = comm.5.AWGNChannel('NoiseMethod'... %initialize BER output %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) data = randn(blkLength. 13). %Modulate. % Calculate errors ber = step(hBER.TurboDecoder(… 'TrellisStructure'. ber = zeros(3. intrlvrIndices. 'InterleaverIndices'.1). end 57 . %Modulate. % Encode random data bits yEnc = step(hTEnc. % Encode random data bits yEnc = step(hTEnc.*rData..gpu. 'InterleaverIndices'. [13 15]. 13).. modout)..'NumIterations'. 13). Add noise to real bipolar data modout = 1-2*yEnc. 'InterleaverIndices'.TurboDecoder(… 'TrellisStructure'. % Turbo Decode decData = step(hTDec.ErrorRate. modout). data. data. intrlvrIndices) % AWG Noise hAWGN = comm. data). data). % Convert to log-likelihood ratios for decoding llrData = (-2/noiseVar). rData = step(hAWGN.ErrorRate..1). % Calculate errors ber = step(hBER. GPU Version 1 % Turbo Encoder hTEnc = comm. 1)>0.poly2trellis(4. llrData). [13 15]. decData). numIter). % Turbo Decode decData = step(hTDec.TurboEncoder('TrellisStructure'.AWGNChannel('NoiseMethod'. end ber = zeros(3.'NumIterations'. 1)>0. % Convert to log-likelihood ratios for decoding llrData = (-2/noiseVar).

'NumIterations'. % Encode random data bits 2.01 hAWGN = comm..1). GPU Version 1 % Turbo Encoder <0.poly2trellis(4.01 hTEnc = comm. % Convert to log-likelihood ratios for decoding 0.30 data = randn(blkLength. 'Variance'). % Turbo Decoder <0.38 yEnc = step(hTEnc.AWGNChannel('NoiseMethod'. % Calculate errors 0. 13). 'Variance').05 modout = 1-2*yEnc.01 hAWGN = comm. % Turbo Decoder 0.ErrorRate.TurboDecoder(… 'TrellisStructure'.1). %initialize BER output %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) 0. data). % Encode random data bits 2.Profile results in Turbo Coding Function CPU % Turbo Encoder <0. data).poly2trellis(4.17 ber = step(hBER. % Convert to log-likelihood ratios for decoding 0.gpu.. decData). 13).poly2trellis(4. intrlvrIndices) % AWG Noise <0..50 rData = step(hAWGN.TurboDecoder(… 'TrellisStructure'. %initialize BER output %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) 0.28 data = randn(blkLength.ErrorRate..01 hTEnc = comm. intrlvrIndices) % AWG Noise <0.17 ber = step(hBER..TurboEncoder('TrellisStructure'.01 hTDec = comm.. 'InterleaverIndices'. Add noise to real bipolar data 0.*rData..poly2trellis(4. 'InterleaverIndices'.AWGNChannel('NoiseMethod'.18 decData = step(hTDec. 1. 'InterleaverIndices'. %Modulate. % BER measurement <0.02 hTDec = comm. % Turbo Decode 98. data. 1)>0.. modout).01 hBER = comm.01 hBER = comm.04 llrData = (-2/noiseVar). [13 15]. 1)>0.33 yEnc = step(hTEnc. [13 15]. intrlvrIndices.5. 13).'NumIterations'.01 ber = zeros(3.45 rData = step(hAWGN. Add noise to real bipolar data 0. modout).05 modout = 1-2*yEnc. % Calculate errors 0.54 decData = step(hTDec.*rData.01 ber = zeros(3. [13 15].5. data.TurboEncoder('TrellisStructure'. %Modulate.03 llrData = (-2/noiseVar). [13 15]. 1. 'InterleaverIndices'. <0. numIter). % Turbo Decode 330. intrlvrIndices. end <0. 13). llrData).. % BER measurement <0. numIter). llrData). end 58 .. decData).

% Calculate errors ber = step(hBER. end %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) data = randn(blkLength. % Convert to log-likelihood ratios for decoding llrData = (-2/noiseVar).5. intrlvrIndices. data. 13). %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) data = randn(numFrames*blkLength.numFrames). % Calculate errors ber=step(hBER.5. % Convert to log-likelihood ratios for decoding llrData = (-2/noiseVar).*rData. % Encode random data bits yEnc = step(hTEnc.gpu.. 13).. % Encode random data bits yEnc = gpuArray(multiframeStep(hTEnc. % Turbo Decode decData = step(hTDec. Add noise to real bipolar data modout = 1-2*yEnc.. 'InterleaverIndices'. gather(decData))..TurboDecoder('TrellisStructure'.'NumIterations'.. GPU Version 2 % Turbo Encoder hTEnc = comm. [13 15]. %Modulate. 'InterleaverIndices'. [13 15].setup for Multi-frame or Multi-user processing numFrames = 30. decData).gpu. data. % Turbo Decode decData = step(hTDec. end 59 . 13). data). 1)>0.ErrorRate. [13 15].. hTDec = comm.AWGNChannel ('NoiseMethod'.TurboEncoder('TrellisStructure'.numIter. % Turbo Decoder hTDec = comm. llrData). modout).poly2trellis(4. numIter).… ’NumFrames’. 13)...TurboDecoder('TrellisStructure'.poly2trellis(4. 'InterleaverIndices'. numFrames)). intrlvrIndices) % AWG Noise hAWGN = comm. rData = step(hAWGN. Add noise to real bipolar data modout = 1-2*yEnc. %Modulate. modout). llrData).'NumIterations'.. % BER measurement hBER = comm. intrlvrIndices) % AWG Noise hAWGN = comm. rData = step(hAWGN. intrlvrIndices. 'Variance').poly2trellis(4.TurboEncoder('TrellisStructure'. 1)>0. 'InterleaverIndices'.poly2trellis(4. data. 'Variance'). % BER measurement hBER = comm.AWGNChannel('NoiseMethod'. [13 15].Key Operations in Turbo Coding Function CPU % Turbo Encoder hTEnc = comm.*rData. % Turbo Decoder ..ErrorRate.

% Turbo Decode 20. Add noise to real bipolar data 0. 0.33 yEnc = step(hTEnc.Profile results in Turbo Coding Function CPU % Turbo Encoder <0. % BER measurement <0. intrlvrIndices.gpu.01 llrData = (-2/noiseVar). data.*rData..TurboEncoder('TrellisStructure'. decData).17 ber = step(hBER.05 modout = 1-2*yEnc.ErrorRate. %Modulate. numIter). end 60 . % Calculate errors 0. 1.gpu.03 hAWGN = comm. 1)>0.01 hAWGN = comm.. 13).02 modout = 1-2*yEnc.. 'NumIterations'. llrData).ErrorRate. 'Variance').30 data = randn(blkLength.AWGNChannel ('NoiseMethod'.09 ber=step(hBER. modout).5. [13 15]. data.TurboEncoder('TrellisStructure'. [13 15]. 'InterleaverIndices'.TurboDecoder(… 'TrellisStructure'.5. intrlvrIndices) % AWG Noise <0. [13 15]. 'InterleaverIndices'.TurboDecoder('TrellisStructure'. ’NumFrames’. % BER measurement <0. 0.45 yEnc = gpuArray(multiframeStep(hTEnc.… poly2trellis(4.numFrames). 13). modout). %Modulate.01 hBER = comm.'InterleaverIndices'..89 decData = step(hTDec.*rData.poly2trellis(4.22 data = randn(numFrames*blkLength.31 rData = step(hAWGN.'NumIterations'.numIter. % Convert to log-likelihood ratios for decoding 0. end %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) 0.. % Calculate errors 0.01 hBER = comm.setup for Multi-frame or Multi-user processing 0. 13). 'Variance').01 numFrames = 30. % Turbo Decoder . numFrames)).. % Convert to log-likelihood ratios for decoding 0. data.poly2trellis(4.03 llrData = (-2/noiseVar). % Encode random data bits 2. 1)>0. %% Processing loop while ( ber(1) < MaxNumErrs && ber(2) < MaxNumBits) 0. 13). llrData).01 hTDec = comm. % Turbo Decoder <0. gather(decData)).50 rData = step(hAWGN.01 hTDec = comm. [13 15]. % Turbo Decode 330. 'InterleaverIndices'.01 hTEnc = comm.poly2trellis(4. % Encode random data bits 2.AWGNChannel('NoiseMethod'.54 decData = step(hTDec. intrlvrIndices) % AWG Noise 0.01 hTEnc = comm. Add noise to real bipolar data 0. GPU Version 2 % Turbo Encoder <0. data). intrlvrIndices..

   61 . Using GPU only makes sense if data size is large. Some functions in MATLAB are optimized and can be faster than the GPU equivalent (eg.Things to note when targeting GPU  Minimize data transfer between CPU and GPU. FFT). Use arrayfun to explicitly specify elementwise operations.

Toolboxes. (i. Toolboxes. MATLAB Distributed • Utilize cluster. matlabpool) Toolbox. Profiler. MATLAB Coder. and grids Computing Server 4. Best Practices in Programming • Vectorization & pre-allocation • Environment tools.Summary Acceleration methodologies in MATLAB & Simulink 1. clouds. Parallel Computing Toolbox 62 . System Toolboxes MATLAB. Refactoring the Implementation • Compiled code (MEX) • GPUs. Code Analyzer) 2. FPGA-in-the-Loop MATLAB.g.e. More Processors or Cores Parallel Computing • High level parallel constructs (e. parfor. System objects) Technology / Product MATLAB. Better Algorithms • Ideal environment for algorithm exploration • Rich set of functionality (e. System Toolboxes 3.g.

Thank You Q&A 63 .

Sign up to vote on this title
UsefulNot useful