File Exchange

image thumbnail

WINNER II Channel Model for Communications Toolbox

Model and simulate spatially-defined channels for multi-user MIMO wireless systems


Updated 10 Mar 2021

Editor's Note: This file was selected as MATLAB Central Pick of the Week

Installer file for WINNER II Channel Model for Communications System Toolbox
Using WINNER II channel models, you can model and simulate spatially-defined channels for multi-user MIMO wireless systems. You can specify an arbitrary number of base stations (BS) and mobile stations (MS) together with their geometry and location information.

The channel model enables you to simulate both line-of-sight (LOS) and non-LOS propagation conditions. It also allows you to apply multiple indoor and outdoor propagation scenarios. You can perform channel filtering in a streaming fashion with WINNER-generated channel coefficients.

The channel model supports
• RF frequencies up to 6 GHz, and signal bandwidths up to 100 MHz
• Line-of-sight (LOS) and non-LOS propagation
• 12 indoor and outdoor propagation scenarios
• Arbitrarily large antenna arrays (for massive MIMO applications)
• Isotropic, dipole and user-defined antenna element patterns
• A variety of antenna array types (linear, circular, and user-defined)

Opening the .mlpkginstall file from your operating system or from within MATLAB will initiate the installation process for this Add-on and acquire the latest version for the release you have.

This .mlpkginstall file is functional for R2016b and beyond.

Comments and Ratings (45)

Zhicheng Ling


冲 边

Yue Shang

@Xuanhong Please refer to winner2.AntennaArray to configure an antenna array supported by WINNER II.

Xuanhong Yan

does WINNER II model cannot support UPA antenna?

Yue Shang

@Abdinasir, you can adjust the CenterFrequency field of the winner2.wimparset structure. Hope this helps.

Abdinasir Hirsi Abdi

how can i change frequency into mmwaves?

Majid Hadi

shuo hu

I am working on the prediction of outdoor and indoor scenario loss model using RT method. please send me codes Hope we can have a nice cooperation!

Mohit Atal

I am working on "Novel 3-D Nonstationary MmWave Massive MIMO
Channel Models for 5G High-Speed Train
Wireless Communications". Please send me codes

sangmi noh


I wish to analyze the codes for High speed trains. If mobile station velocity is 350 km per hour and if there is only one mobile and one base station.... where do I change it to get it work?? Please help me.

khohslarahman rahmani

HI, i am working on MANET with smart antenna i am looking to simulate to solve collision and redanduncy problem in manet but i couldnt implement it in NS2, now i need to know how can simulate smart antenna with AOA in MANET

Abdelwahab Afifi

@zhengyang Chen
can you please send me the code for testing LS and MMSE using winner channel model

Zhengyang Chen

I'm now using this winner channel model to test the MMSE and LS estimator. I found some interesting facts that in some scenarios like A1, B1, B2 etc, the MMSE obtain a BER against SNR curve worse than the LS method, which makes no sense to me. Does anybody understand why this happens?

Yue Shang

@Mohammad, the WINNER II channel model was built for frequency up to 6 GHz. If you specify a center frequency greater than 6 GHz, the MATLAB code may still run, but the channel model may be inappropriate for your applications.

Yue Shang

@Zhengyang, yes, passing impulses through the channel is one way to get the CIR.

Zhengyang Chen

Hi there, I got a question when using MMSE estimators after the signal goes through the channel. Can I manage to obtain the channel impulse response which is needed in MMSE estimation? Can I input a set of data like [1 0 0 0 ...] and deconvolute to get the CIR?

Mohammad assiri

Can I use this WINNER II channel modeling for frequencies greater than 6Ghz up to 100 Ghz ? would it still work or should I use something like QUADRIGA?

Ahmed Elshirkasi

thnx Yue Shang for ue reply .. Any idea how to import radiation pattern of MIMO elements from CST to WINNER II model?

Yue Shang

Hi Ahmed, the winner2.AntennaArray function allows you specifying the radiation pattern per antenna element in your antenna array. But it does not allow you importing the radiation pattern for the array. Hope this helps.

Ahmed Elshirkasi

I have urgent question please .. can I import measured radiation pattern of MIMO antenna to this model.

Tomasz Nowak

I'm wondering if this is an implementation of the final WINNER II model (D1.1.2) or the interim one (D1.1.1)? I am trying to work with different down-tilt angles (so a change in the azimuth direction, which supposedly only by the D1.1.2 model) and the results suggest that the difference in elevation between the transmitter and receiver is ignored

Yue Shang

Hi Ankit, sorry, I haven't tried to model an FDD system. But based on what is described in section 5.4.3, it seems doable. The small scale parameters can be found in the 3rd output of the winner2.wim function. Hope this helps.

Ankit Jain

Hi Yue Shang.
Thanks for response. Is there any work around for creating uplink channel.
I have found this method in 'Kyosti, Pekka, Juha Meinila, et al. WINNER II Channel Models. D1.1.2 V1.2. IST-4–027756 WINNER II, September 2007.' section 5.4.3 which says :

In next steps we explain how to obtain both uplink and downlink channel of an FDD system with
bandwidths of 100 MHz. The center carrier frequencies are fc and fc + Dfc :
· Define BS and MS positions, calculate the channel for one link, e.g. BS to MS at certain
carrier frequency fc
· Save the small scale parameters
· Exchange the positions of the BS and MS
· Calculate the other link, in this example the MS to BS by:
o Using saved small scale parameters
o Randomizing the and initial phases of rays
o Changing the carrier frequency to fc + Dfc

But I am not sure how to implement it specially at step when we need to exchange BS and MS position. Consider for scenario when we have 2 MS connected to 1 BS.

Yue Shang

Hi Ankit, the WINNER II channel only models downlink. Hope this helps.

Ankit Jain


How can i create uplink channel (mobile station to base station) for FDD using winner2 toolbox.

Yue Shang

Hi Ahmed, if you have the field pattern for each individual element of the array, you can use the winner2.AntennaArray function to formulate your own antenna array and use it to model the channel.

Yue Shang

@WK, the mobile station's instantaneous velocity is required so the channel is changing over time due to Doppler/phase shifts. In addition, WINNER II uses MS velocity, half wavelength and the ModelConfig.SampleDensity field to implicitly set the signal sampling rate. Please refer to the help page of comm.WINNER2Channel on this.


@Yue Shang: Can you clarify your comment to Ioannis: "the distance between BS and MS is fixed for a given object configuration." If this is the case, what is the point to setting the "cfgLayout.Stations.Velocity" property?

Ahmed Elshirkasi

can I add my own MIMO antenna radiation pattern to this model?

Yue Shang

Hi Mohammad, thanks for pointing out the typos in the help page example. We will fix it.

Mohammad N.

correct code:


cfgWim = winner2.wimparset;
cfgWim.SampleDensity = 20;
cfgWim.RandomSeed= 10; % For repeatability
BSAA = winner2.AntennaArray('UCA',8,0.02); % UCA-8 array for BS
MSAA1 = winner2.AntennaArray('ULA',2,0.01); % ULA-2 array for MS1
MSAA2 = winner2.AntennaArray('ULA',4,0.005); % ULA-4 array for MS2
MSIdx = [2,3];
BSIdx = {1};
NL = 2;
rndSeed = 5;
cfgLayout = winner2.layoutparset(MSIdx,BSIdx, ...
[H1,~,finalCond] = winner2.wim(cfgWim,cfgLayout);
[H2,~,finalCond] = winner2.wim(cfgWim,cfgLayout,finalCond);
H = cellfun(@(x,y) cat(4,x,y), H1, H2, 'UniformOutput', false);
Ts = finalCond.delta_t(1); % Sample time for the 1st link
xlabel('Time (s)');
title('First Path Coefficient of 1st Link, 1st Tx and 1st Rx');
grid on;

Mohammad N.

The code example in winner2.wim help page has some syntax bugs and after correction, its result is wrong.

Yue Shang

Hi Itay -- What is shown on the wiki page is the total directivity pattern for a vertical half wavelength dipole, while the plots you demonstrated using winner2.dipole are the V and H polarization directivity patterns in the azimuth plane for the same dipole. For a vertical dipole, the H polarization pattern is zero in the azimuth plane. That’s why you see the difference. Note that winner2.dipole doesn’t model elevation. Please refer to the command line help of winner2.dipole. Hope this helps.

Itay Cnaan

The function winner2.dipole() provides wrong radiation pattern.
The output radiation pattern is zero, while it should follow the dipole known pattern (

This code demonstrates it:

az = -180:179;
pattern = squeeze(winner2.dipole(az));
polarplot(az/180*pi, pattern(1,:));
polarplot(az/180*pi, pattern(2,:));

Jorden Lee


John Wang

It is useful for 5G R&D.

Yue Shang

Hi Ioannis, the distance between BS and MS is fixed for a given object configuration, so is the path loss. The power variation can only be from fading. Perhaps it is a slow fading channel and the fading happens to go deep from the start of the simulation. If that is the case, you will see the power go up when you run the simulation long enough. Alternatively, you can try to reduce the SampleDensity field value of the ModelConfig property to see if it can make a difference for you.

Ioannis Sarris

Excellent work on this. Just one question: each time the Winner channel filter object is called, the output power is decreasing. My initial thought that this was due to moving away from the BS, but the time-frame is much much smaller than this to justify such variation.

Any comments?

Chinmaya Chhatre

Hello, I have MATLAB 2016b. Yet when I try to install this add-on, it says I need Communications Toolbox 6.3 and I can't find the mentioned toolbox. Hence I am unable to use this add-on. Please help me..

Sorry Parna, this submission is not available for R2015b. Please update your MATLAB version to R2016b and try using it again.

Parna Sabeti

Hello, I've got a message that says this model is not available for this release of MATLAB. I'm using MATLAB R2015b, and it's updated. So, what's wrong? Can anybody help me with that, please?

Parna Sabeti

MATLAB Release Compatibility
Created with R2016b
Compatible with R2016b to R2021a
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!