⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settings.m

📁 matlab ofdm simulation
💻 M
字号:
%SETTINGS Contains the settings to use for the COFDM transmission
%	This is a common file used for the transmission and reception
%	It specifies all the link properties, channel properties,
%	data to send and filenames for input an output files
%
%	NOTE: Not all setting combinations work as only a few have been
%	fully debugged. If the receiver is giving very high error rates, 
%	then it is likely that there is a synchronisation error. If a
%	different ifft_size, NumCarr and guardtime is used this may fix the
%	error. For example: ifftsize = 2048, NumCarr = 800 guardtime = 512
%	didn't sync propoerly for the Corrs.wav data set, but changing it
%	to ifftsize = 1024, NumCarr = 400 and guardtime = 256, works.
%	Also NumCarr must be < ifftsize/2 as the generated waveform
%	is real and not complex.
%
%	Due to processing and memory limitations, the maximum size input
%	data is approx. 20-100kB depending on the modulation scheme.
%
%	This code is not likely to work using the student version of Matlab 4.2
%	due to the array size limitation of the student version.
%
%	There may be some capability problems when running this code in Matlab 5.
%	I think the main problem is with the scripts used to read and write the
%	wave files. These could be changed to the in-built Matlab 5 wave scripts.
%
%	Written by Eric Lawrey 12/8/97
%
%	15/4/1999
%	Added signal scaling TxSignalPow and FullScaleFlag.

%================
% COMMON SETTINGS
%================
wordsize = 8;		%Number of bits per carrier per symbol to send
			%Allowable values are 1,2,4,8. 1 = BPSK, 2=QPSK, 4=16PSK, 8=256PSK
OutWordSize = 8;	%Base wordsize of input data to the COFDM transmission,
			%typically 8 bit. The input and output data is converted from
			%the OutWordSize to wordsize during the transmission
ifftsize = 1024;	%size fourier transform to generate signal (it is equal to the
			%number of samples in the symbol.) Note : must be > 2* NumCarr
NumCarr = 400;		%Number of transmission carriers
CarrSpacing = 1;	%Spacing between carriers. (1 = use all fft bins,
			%2 = every second bin)
guardtime = 256;	%Total guard time in samples.
			%(This is typically 25% of the FFT size)
guardtype = 2;		%1 = Zeroed signal, 2 = cyclic extension, 3 = half zero, half cyclic
			%Note: Only type 3 has been tested fully
windowtype = 0;		%0 = No window, 1 = Hanning window of symbol.
			%The window is applied to the base band time waveform.

FrameGuard = ifftsize+guardtime;  %Guard Time between successive frames (1 symbol)

PictureComp = 1;	%Fraction of picture amplitude to compress
			%by to over come, wrap around from black to white
			%due to a phase error (set to 1 for no compression)
DataAvg	= 1;		%Data Averaging, dupticate transmission of
			%data words to reduce the phase error. (Normally set to 1)
SymbPerFrame = 30;	%Number of data symbols per frame. The timing is resynchronized
			%at the start of each frame. Set to 0 if only
			%want all the data to be transmitted with one frame.

%=====================
% TRANSMITTER SETTINGS
%=====================
NoFrames = 3;		%Number of duplicate data frames to generate Only valid
			%if SymbPerFrame = 0
FullScaleFlag = 1;	%Flag to indicate if the OFDM signal show be scaled to
			%full scale of the output WAV file. i.e giving maximum
			%signal power with no clipping. The signal is scaled
			%to FullScale.
			%FullScaleFlag = 1, scale output sigal to full scale, TxSignalPow 
			%is not used
			%FullScaleFlag = 0, scale output signal based on TxSignalPow.
FullScale = 0.95;	%Fraction of wav file full scale must be less that 1
TxSignalPow = 0.1;	%Scaling of the transmitter signal power
			%TxSignalPow is the fraction of max signal for the wave file
			%that the RMS of the OFDM signal will be scaled to.
			%i.e. 0.01 => RMS OFDM power is 20dB below maximum signal
			%power for the WAV format.
			%if TxSignalPowis set above about 0.05 some clipping may start
			%to occur.

%==================
% RECEIVER SETTINGS
%==================
quickrate = round(FrameGuard/128)+1;
			%Amount of subsampling to find the approx starting position of the
			%start frame. The larger quickrate is the faster the search is but
			%the lower the probability of finding the correct starting location.
			%quickrate needs to be lower as the SNR worsens. Typical values
			%are from 10 - 200

%=================
% CHANNEL SETTINGS
%=================
Comp = 0;		%Peak Power Compression (in dB relative to peak signal power)
			%set to zero for no signal compression or clipping
SNR = 300;		%Signal to noise ratio of received signal in dB, setting > 300
			%adds no noise.
Delay = 1;		%Delay of single reflection multipath signal in samples
			%Set to 1 for no multipath.
MultiMag = 1;		%Magnitude of the reflection with respect to the direct signal
			%e.g. Setting to 0.5 makes the reflection half the amplitude of the
			%direct signal

%====================
% INFORMATION FORMATS
%====================
DataType =4;		%Type of data to send in the transmission
			% 1 = random data (Amount set by NoRandData)
			% 2 = grey scale bitmap image (only the picture data is sent
			% not the file header or colour map) This is useful for high
			% error rate conditions
			% 3 = general binary data file. This allows for any data file to be
			% sent, e.g. a recorded wavefile, a gif image, a jpg image, an excel
			% document etc. The file is sent simply as a binary file with no
			% knowledge of the file structure. Thus an error in the file header
			% could corrupt the entire file. In a practical system the forward
			% error correction would be required to reduce the error to
			% an acceptable level to send general data.
			% To make the data link easier to implement the number of data words
			% sent and the number of frames used is not transmitted, but sent via
			% a file.
			% 4 = Wave Sound file. This reads in an 8bit windows 3.1 wav file
NoRandData =12000;	%Number of random data words to transmit if the DataType = 1.
RandSeed = 1234;	%Random Seed used for generating the random data sent. Both the
			%transmitter and receiver needs to know the seed. Only valid if
			%DataType = 1.
Fs = 44100;		%Sample rate of COFDM wav file generated
res = 16;		%No. bits/sample of saved wavefile
txwavfile = 'imagetx.wav';	%Filename of the wavefile generated
rxwavfile = 'imagetx.wav';	%Filename of the wavefile to decode
switch DataType
case 2
	infile    = 'fish.bmp';	%input filename of the bmp file or general file to transmit
	outfile   = 'out.bmp';		%Filename to store the received image
case 3
	infile    = 'DC-x.jpg';	%input filename of the bmp file or general file to transmit
	outfile   = 'out.jpg';		%Filename to store the received image
case 4
	infile    = 'corrs11.wav';	%input filename of the bmp file or general file to transmit
	outfile   = 'out.wav';		%Filename to store the received image
otherwise
	infile    = 'fish.bmp';	%input filename of the bmp file or general file to transmit
	outfile   = 'out.bmp';		%Filename to store the received image
end


errorfile = 'errorpic.bmp';	%Filename of the picture of the
				%errors induced in the received image.
				%Only valid for DataType = 2;
fileknown = 1;		%Indicates whether the OFDM signal file being read is known
				%i.e. whether transmitted data file exists so that the 
				%exact data size can be found.
				%if fileknown = 0, the OFDM signal is read straight from
				%the file given with no regard for transmitted data file.
				%Error analysis can not be done on files read in this way
				%as there is nothing to check the received data against.
				%Also padding may be added to the received data.
				%fileknown = 1, is the normal operation where the original
				%received data is checked against the transmitted data.

%==================================================
%Calc Carriers used for a single wide COFDM channel
%==================================================
%This section calculates the carriers used to transmit the signal.
%carriers is a vector of the carriers used in the transmission, e.g. [3,5,7,8,9]
%Modifying carrier, allows the spectrum to be tailored to the requirements of the channel
MidFreq = ifftsize/4;			%find the middle of the spectrum
StartCarr = MidFreq - round(((NumCarr-1)*CarrSpacing/2));
FinCarr = MidFreq + floor(((NumCarr-1)*CarrSpacing/2));
carriers = [StartCarr:CarrSpacing:FinCarr ]+1;

%carriers = [2:NumCarr];
NumCarr = length(carriers);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -