- 1 specifies that the number is signed.
- 9 is the word length.
- 5 is the number of fractional bits.
Convert data to sfixed in workspace
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hey.
please, how can i convert the datatype of a variable in workspace from DOUBLE to Sfixed9_EN5.
the variables Lc(i) will be used as inputs of a simulink model.
Thank you.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
global Lc1;
global Lc2;
global Lc3;
global Lc4;
global Lc5;
global Lc6;
global Lc7;
global Lc8;
global Lc9;
global Lc10;
R=1/2;
Mo=2;
numerrmin =1000;
SNRdB=1:0.5:3;
BER_bit=zeros(size(SNRdB));
codewordH=[0,0,0,0,0,0,0,0,0,0];
modulatedsig=1-2*codewordH;
for k=1:length(SNRdB)
fprintf('SNR:%d\n',SNRdB(k))
frame=0;
numerr=0;
rat_err=0;
EbN0_lin=10^(SNRdB(k)/10);
EsN0_lin=EbN0_lin*R*log2(Mo);
Es= 1 ;
N0=Es/EsN0_lin;
sigma=sqrt(N0/2);
while(numerr < numerrmin)
fprintf('frame : %d\n',frame)
frame = frame + 1;
bruit= randn(size(modulatedsig));
receivedsig =modulatedsig+sigma.*bruit;
Lci = (4.*(receivedsig./N0));
Lc1=Lci(1);
Lc2= Lci(2);
Lc3=Lci(3);
Lc4=Lci(4);
Lc5=Lci(5);
Lc6=Lci(6);
Lc7=Lci(7);
Lc8=Lci(8);
Lc9=Lci(9);
Lc10=Lci(10);
% Lc1=typecast(Lc1, 'fixdt(1,9,5)');
% Lc2=typecast(Lc2, 'sfix9');
% Lc3=typecast(Lc3, 'sfix9');
% Lc4=typecast(Lc4, 'sfix9');
% Lc5=typecast(Lc5, 'sfix9');
% Lc6=typecast(Lc6, 'sfix9');
% Lc7=typecast(Lc7, 'sfix9');
% Lc8=typecast(Lc8, 'sfix9');
% Lc9=typecast(Lc9, 'sfix9');
% Lc10=typecast(Lc10, 'sfix9');
Lc1=timeseries(Lc1);
Lc2=timeseries(Lc2);
Lc3=timeseries(Lc3);
Lc4=timeseries(Lc4);
Lc5=timeseries(Lc5);
Lc6=timeseries(Lc6);
Lc7=timeseries(Lc7);
Lc8=timeseries(Lc8);
Lc9=timeseries(Lc9);
Lc10=timeseries(Lc10);
%sim('LDPCMatlabSimulink','SrcWorkspace','current')
s=sim('LDPCMatlabSimulink');
x1=getdatasamples(x1,1);
x2=getdatasamples(x2,1);
x3=getdatasamples(x3,1);
x4=getdatasamples(x4,1);
x5=getdatasamples(x5,1);
x6=getdatasamples(x6,1);
x7=getdatasamples(x7,1);
x8=getdatasamples(x8,1);
x9=getdatasamples(x9,1);
x10=getdatasamples(x10,1);
SMS=[x1 x2 x3 x4 x5 x6 x7 x8 x9 x10];%%%%%[0 0 0 0 0 0 0 0 0 0];%%
%iteration=it;
[Num1,Rat1] = biterr(codewordH,SMS);
numerr=numerr+Num1;
rat_err=rat_err+Rat1;
if frame>2
break ;
end
BER_bit(k)=rat_err/frame;
end
end
semilogy(SNRdB, BER_bit,'v-r','LineWidth',2);
grid on;
xlabel('SNR,(dB)')
ylabel('(BER)')
0 Kommentare
Antworten (1)
Akash
am 8 Jul. 2024
Bearbeitet: Akash
am 8 Jul. 2024
Hi Taamouch,
You can convert a variable 'x' of datatype 'double' to the fixed-point data type 'sfix9_En5' by using the 'fi' function as follows:-
x_fix = fi(x, 1, 9, 5);
In this function:
For more detailed information, you can refer to the MATLAB documentation on the 'fi' function:-https://www.mathworks.com/help/fixedpoint/ref/embedded.fi.html#d126e96527:~:text=example-,a%20%3D%20fi(v%2Cs%2Cw%2Cf),-returns%20a%20fi
You can also utilize the following MATLAB documentation that demonstrates a model for converting signals between built-in and fixed-point data types:-
0 Kommentare
Siehe auch
Kategorien
Mehr zu Data Import and Analysis finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!