cs-2 Lab Codes

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

shannon

clc;
clear all;
close all;
N=input('enter no of symbols');
P1=input('enter probabilities of each symbols');
P=sort(P1,'descend');
su1=sum(P);
aq=num2str(su1);
su2=str2double(aq);
if(su2~=1
h=msgbox('sum of probability should be one','Error','error');
return;
else
disp('total probability sum is one');
end
[r1, c1]=size(P);
%pause(5);
if(N~=c1)
h=msgbox('probability dimension is not matching with given no of
symbols','Error','error');
return;
end
m=zeros(1,N);
m1=zeros(1,N);
H=0;
result1=zeros(1,N);
f=zeros(1,N);
g=zeros(1,N);
k=zeros(1,N);
N_bar=0;
for i=1:N
H=H+P(i)*log2(1/(P(i)));

m(i)=1+log2(1/P(i));
m1(i)=log2(1/P(i));
temp=m1(i)-fix(m1(i));
if(temp==0)
m(i)=m1(i);
end
r=fix(m(i));
N_bar=N_bar+r*P(i);
if(i==1)
f(i)=0;
else
f(i)=P(i-1)+f(i-1);
end
for j=1:r
if(j==1)
g(j)=f(i)*2;
else
g(j)=g(j-1)*2;
end
k(j)=fix(g(j));
if(g(j)>=1)
g(j)=g(j)-1;
end
if(j==1)
result1=sprintf('%0*d',1,(k(j)));

else
if(k(j)==0)
result2= sprintf('%0*d',1,(k(j)));
result1=strcat(result1,result2);
else
result1=strcat(result1,num2str(k(j)));
end
end

end
result{i}=result1; % matrix elements assigned with strings

end
eff=H/N_bar;
disp('entropy');H
disp('averge no of bits per symbol');N_bar
disp('efficiency');eff
disp('binary of symols');result
disp('code for symbol with probabilities');P
pause(.5)
disp('are');result
disp('respectively')
shannon fano

clc;
clear all;
close all;
disp('Enter the probabilities:'); %ss=[0.25 0.125 0.5 0.125];
%ss=[0.25 0.125 0.0625 0.0625 0.0625 0.25 0.0625 0.125];
ss=[0.4 0.2 0.12 0.08 0.08 0.08 0.04] %ss=[0.4 0.3 0.2 0.1]
%ss=[0.45 0.15 0.1 0.1 0.08 0.08 0.04]
%ss=[0.2 0.15 0.03 0.05 0.45 0.08 0.04]
%outputs = string of codewords,average codeword length
ss=ss./sum(ss); %if occurrences are inputted, probabilities are gained
ss=sort(ss,'descend'); %the probabilities are sorted in descending order
%siling=ceil(log2(1/ss(1))); %initial length is computed
siling=log2(1/ss(1)); %initial length is computed
siling=round(siling,1,'significant');
sf=0;
fano=0;
%initializations for Pk
n=1;Hx=0; %initializations for entropy H(X)
for i=1:length(ss)
Hx=Hx+ ss(i)*log2(1/ss(i)); %solving for entropy
end
for k=1:length(ss)
info(k)=-(log2(ss(k))); %Information
end

for j=1:length(ss)-1
fano=fano+ss(j);
sf=[sf 0]+[zeros(1,j) fano]; %solving for Information for every codeword
siling=[siling 0]+[zeros(1,j) ceil(log2(1/ss(j+1)))];
%solving for length every codeword
end
for r=1:length(sf)
esf=sf(r);
for p=1:siling(r)
esf=mod(esf,1)*2;
h(p)=esf-mod(esf,1); %converting Pk into a binary number
end
hh(r)=h(1)*10^(siling(r)-1); %initializtion for making the binary a whole number
for t=2:siling(r)
hh(r)=hh(r)+h(t)*10^(siling(r)-t);
%making the binary a whole number
end %e.g. 0.1101 ==> 1101
end
c={'0','1'};
disp('Codeword');
for i=1:length(hh)
u=1; rting the codes into a string
for t=siling(i):-1:1
f=floor(hh(i)/10^(t-1)); %1001 ==>1 (getting the first highest unit of a number)
hh(i)=mod(hh(i),10^(t-1));
%1001 ==>001(eliminating the first highest unit of a number)

if f==1
if u==1
d=c{2};
%conversion part (num(1001) to str(1001))
else
d=[d c{2}];
end
else
if u==1
d=c{1};
else
d=[d c{1}];
end
end
codex{i,:}={d};
u=u+1;
end
disp([d])
end

tao=siling(1)*ss(1); %initialization for codeword length


for u=1:length(ss)-1 %computing for codeword length
tao=tao+siling(u+1)*ss(u+1);

end
T=tao/n; %computing for average codeword length
B=[flipud(rot90(ss)),flipud(rot90(siling)),flipud(rot90(info))];
disp(['Probability',' Length',' Information'])
disp(B)
disp(['Entropy H(X) = ',num2str(Hx),'bits/symbol'])
disp(['Average length,L = ',num2str(T),'bits/symbol'])
eff=((Hx/T)*100); %Coding efficiency
disp(['Efficiency=',num2str(eff),'%'])
redu=100-eff; %Redundancy
disp(['Redundancy=',num2str(redu),'%'])
huffman

clc;
clear all;
s=input('Enter symbols- ') %format ['a','b','c','d','e','f'];
p=input('Enter value of probabilty- ') %format
[0.22,0.20,0.18,0.15,0.13,0.12];
if length(s)~=length(p)
error('Wrong entry.. enter again- ')
end
i=1;
for m=1:length(p)
for n=1:length(p)
if(p(m)>p(n))
a=p(n); a1=s(n);
p(n)=p(m);s(n)=s(m);
p(m)=a; s(m)=a1;
end
end
end
display(p) %arranged prob. in descending order.
tempfinal=[0];
sumarray=[];
w=length(p);
lengthp=[w];
b(i,:)=p;
while(length(p)>2)
tempsum=p(length(p))+p(length(p)-1);
sumarray=[sumarray,tempsum];
p=[p(1:length(p)-2),tempsum];
p=sort(p,'descend');
i=i+1;
b(i,:)=[p,zeros(1,w-length(p))];
w1=0;
lengthp=[lengthp,length(p)];

for temp=1:length(p)
if p(temp)==tempsum;
w1=temp;
end
end
tempfinal=[w1,tempfinal]; % Find the place where tempsum has been inserted
display(p);
end
sizeb(1:2)=size(b);
tempdisplay=0;
temp2=[];

for i= 1:sizeb(2)
temp2=[temp2,b(1,i)];
end
sumarray=[0,sumarray];
var=[];
e=1;
for ifinal= 1:sizeb(2)
code=[s(ifinal),' ']
for j=1:sizeb(1)
tempdisplay=0;

for i1=1:sizeb(2)
if( b(j,i1)==temp2(e))
tempdisplay=b(j,i1);
end
if(tempdisplay==0 & b(j,i1)==sumarray(j))
tempdisplay=b(j,i1);
end
end
var=[var,tempdisplay];
if tempdisplay==b(j,lengthp(j)) %assign 0 & 1
code=[code,'1'];
elseif tempdisplay==b(j,lengthp(j)-1)
code=[code,'0'];
else
code=[code,''];
end
temp2(e)=tempdisplay;
end
display(code) %display final codeword
e=e+1;
end
lbc

#include<stdio.h>
#include<conio.h>
void main() {
inti,j,n,k,M[10],C[10],G[10][10],par[10][10];
clrscr();
printf(" For A Generator Matrix Enter :\n");
printf("1. The No Of Message Bits(n)\t: ");
scanf("%d",&n);
printf("2. The No Of Parity Bits(k)\t: ");
scanf("%d",&k);
printf("\nEnter The Elements Of Generator Matrix:\n");
for(i=0;i<k;i++)
for(j=0;j<n;j++)
scanf("%d",&G[i][j]);
printf("\nEnter The Message Bits\n");
for(i=0;i<k;i++)
scanf("%d",&M[i]);
printf("\t\t\tResult\n");
printf("____________________________________________________");
printf("\n\tThe Generator Matrix Is :\n\t");
for(i=0;i<k;i++) {
for(j=0;j<n;j++)
printf("%d\t",G[i][j]);
printf("\n\t");
}
printf("\n\tThe Parity Matrix Is :\n\t");
for(i=0;i<k;i++) {
for(j=0;j<n-k;j++) {
par[i][j]=G[i][j+k];
printf("%d\t",par[i][j]); }
printf("\n\t");
}
printf("\n\tTheMessege Bits :\n\t");
for(i=0;i<k;i++)
printf("%d ",M[i]);
printf("\n\n\tThe Parity Bits :");
for(i=0;i<n-k;i++)
{
C[i] = 0;

for(j=0;j<k;j++)

C[i]=(C[i] + M[j] * par[j][i])%2;


printf("\n\tC%d = %d",i+1,C[i]);
}
printf("\n\n\tCode Word For Given Message Bit:\n\t");
for(i=0;i<k;i++)
printf("%d ",M[i]);
for(i=0;i<n-k;i++)
printf("%d ",C[i]);
printf("\n_____________________________________");

getch(); }
crc
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main() {
int i,j,keylen,msglen;
char input[100], key[30],temp[30],quot[100],rem[30],key1[30];
clrscr();
printf("Enter Data: ");
gets(input);
printf("Enter Key: ");
gets(key);
keylen=strlen(key);
msglen=strlen(input);
strcpy(key1,key);
for (i=0;i<keylen-1;i++) {
input[msglen+i]='0';
}
for (i=0;i<keylen;i++)
temp[i]=input[i];
for (i=0;i<msglen;i++) {
quot[i]=temp[0];
if(quot[i]=='0')
for (j=0;j<keylen;j++)
key[j]='0'; else
for (j=0;j<keylen;j++)
key[j]=key1[j];
for (j=keylen-1;j>0;j--) {
if(temp[j]==key[j])
rem[j-1]='0'; else
rem[j-1]='1';
}
rem[keylen-1]=input[i+keylen];
strcpy(temp,rem);
}
strcpy(rem,temp);
printf("\nQuotient is ");
for (i=0;i<msglen;i++)
printf("%c",quot[i]);
printf("\nRemainder is ");
for (i=0;i<keylen-1;i++)
printf("%c",rem[i]);
printf("\nFinal data is: ");
for (i=0;i<msglen;i++)
printf("%c",input[i]);
for (i=0;i<keylen-1;i++)
printf("%c",rem[i]);
getch();
}
scc

#include< stdio.h>
#include< conio.h>
void main()
{
int i,j,k,n,gb,mb,g[10][10],x[10][10],c[10],m[10],t[10];
clrscr();
for(i=0;i< 10;i++)
{ for(j=0;j< 10;j++)
g[i][j]=0;x[i][j]=0;c[i]=0;m[i]=0;t[i]=0;
}
printf("\t\t\t¦ Convolutional Code ¦");
printf("\n\nEnter The No. Of Generator Sequences\t: ");
scanf("%d",&n);
printf("Enter The No. Of Bits In Each Generator Sequence\t: ");
scanf("%d",&gb);
for(i=0;i< n;i++)
{
printf("\n\nEnter The Values Of G%d\t:\n",i);
for(j=0;j< gb;j++)
scanf("%dt",&g[i][j]);
}
printf("\nEnter The No. Of Message Bits\t: ");
scanf("%d",&mb);
printf("Enter The Message Bits\t:\n");
for(i=0;i< mb;i++)
scanf("%d",&c[i]);
for(i=0;i< mb;i++)
{
for(j=0;j< gb;j++)
{
t[j]=m[j];
if(j==0)
m[j]=c[i];
else
m[j]=t[j-1];
}
for(k=0;k< gb;k++)
{
for(j=0;j< gb;j++)
{ if(g[k][j]==1)
x[k][i]=x[k][i]^m[j]; } } }
printf("\n\n¦ The Code Vectors Are: ¦\n");
for(i=0;i< mb;i++)
{ printf("¦ \n¦ ");
for(j=0;j< gb;j++)
printf("%d\t",x[j][i]); }
getch(); }

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy