-1

ファイルから派生したテキストの10進数から2進数への変換は次のとおりです。

temp=textread('E:\one.txt', '%1s', 'whitespace', '');  
text = char(temp);                                                           
y = zeros(length(text)*8,1);                                           
for n = 1:1:length(text)  
a=abs(text(n));                                                              
f = 8*(n-1)+1;                                                          
y(f:f+7,1)=(de2bi(a,8))';                                                   
end
disp('THE MAGNITUDE OF THE TEXT IS =');
disp(a);
disp(f);
x=y';
disp('THE BINARY BITS ARE');
disp(x);

ファイルに「1」が格納されている場合のこのプログラムの出力

THE MAGNITUDE OF THE TEXT IS =
49

 1

THE BINARY BITS ARE
 1     0     0     0     1     1     0     0

xのビット数が8ビットの場合、最初の3ビットを変数に表示し、残りの5ビットを別の変数に表示する必要があります。MATLABでこのためのプログラムが必要です。

eg x=00110011
a=001
b=10011 

エンコーディングプログラム

clc;
clear all;
temp=textread('E:\one.txt', '%1s', 'whitespace', '');  
text = char(temp);                                                               
y = zeros(length(text)*8,1);                                                
for n = 1:1:length(text)  
    a=abs(text(n));                                                                 
    f = 8*(n-1)+1;                                                                    
    y(f:f+7,1)=(de2bi(a,8))';                                            
end
disp('THE MAGNITUDE OF THE TEXT IS =');
disp(a);
disp(f);
x=y';
disp('THE BINARY BITS ARE');
disp(x);
z=length(x);
savefile='D:\mat\z.mat';
save (savefile,'z','-MAT');
disp('TOTAL NUMBER OF BITS =');
disp(z);
bk=input('ENTER THE NUMBER OF ROWS =');
savefile='D:\mat\bk.mat';
save (savefile,'bk','-MAT');
c=z/bk;
savefile='D:\mat\c.mat';
save (savefile,'c','-MAT');
k=1;
for i=1:bk
    for j=1:c
        m(i,j)=x(k);
        k=k+1;
    end
end
%disp(m(i,j));
disp('THE MESSAGE BITS ARE ');
disp(m);
savefile='D:\mat\m.mat';
save (savefile,'m','-MAT');
m_tot=(size(m,1)*size(m,2));
savefile='D:\mat\m_tot.mat';
save (savefile,'m_tot','-MAT');
savefile='D:\mat\r1.mat';
r1=[randperm(bk),randperm(bk)];
save (savefile,'r1','-MAT');
disp(r1);
savefile='D:\mat\r2.mat';
r2=[randperm(bk),randperm(bk)];
save (savefile,'r2','-MAT');
disp(r2);
savefile='D:\mat\f(1).mat';
f1= randint(1,1,[1,bk]);
save (savefile,'f1','-MAT');
savefile='D:\mat\en.mat';
en(1,:)=m(f1,:);
save (savefile,'en','-MAT');
disp('DIRECTLY ASSIGNED BLOCK IS');
disp(f1);
for w=1:(length(r1))
    en(w+1,:)=xor((m(r1(w),:)),(m(r2(w),:)));
    disp('THE EXORED BLOCKS ARE= ');
    disp(r1(w));
    disp(r2(w));
end
disp('THE ENCODED BITS ARE');
disp(en);
en_tot=(size(en,1)*size(en,2));
disp('tot no of encoded bits');
disp(en_tot);
save (savefile,'en_tot','-MAT');
savefile='D:\mat\en_tot.mat';

変数enは、uが変数xで行ったのと同じように、ホップカウントに基づいて分割する必要があります。

4

2 に答える 2

0

配列をスライスするだけです。

disp(x(1:3));
disp(x(4:end));
于 2013-03-25T17:50:39.980 に答える
0

これを試して:

%After computing "x", the double array, as required...
d = input('Enter the length of the first sub-array: ');
a = x(1:d)
b = x(d+1:end)

例えば:

>> 
temp='1';  
text = char(temp);                                                           
y = zeros(length(text)*8,1);                                           
for n = 1:1:length(text)  
a=abs(text(n));                                                              
f = 8*(n-1)+1;                                                          
y(f:f+7,1)=(de2bi(a,8))';                                                   
end
disp('THE MAGNITUDE OF THE TEXT IS =');
disp(a);
disp(f);
x=y';
disp('THE BINARY BITS ARE');
disp(x);
%After computing "x", the double array, as required...
d = input('Enter the length of the first sub-array: ');
a = x(1:d)
b = x(d+1:end)

結果は次のようになります。

THE MAGNITUDE OF THE TEXT IS =
    49

     1

THE BINARY BITS ARE
     1     0     0     0     1     1     0     0

Enter the length of the first sub-array: 3

a =

     1     0     0


b =

     0     1     1     0     0

しかし、このプログラムが何を達成するのかはまだわかりません。

編集

変更された要件に応じた新しいコード:

>> 
temp='1';  
text = char(temp);                                                           
y = zeros(length(text)*8,1);                                           
for n = 1:1:length(text)  
    a=abs(text(n));                                                              
    f = 8*(n-1)+1;                                                          
    y(f:f+7,1)=(de2bi(a,8))';                                                   
end
disp('THE MAGNITUDE OF THE TEXT IS =');
disp(a);
disp(f);
x=y';
disp('THE BINARY BITS ARE');
disp(x);
%After computing "x", the double array, as required...
d = input('Enter the hop-count vector: ');
for i=2:length(d)
    d(i) = d(i) + d(i-1);
end
d = [0, ceil((d./d(end))*length(x))];
disp('The resultant split up is:')
for i=2:length(d)
    disp(x((d(i-1)+1):d(i)));
end

結果は次のようになります。

THE MAGNITUDE OF THE TEXT IS =
    49

     1

THE BINARY BITS ARE
     1     0     0     0     1     1     0     0

Enter the hop-count vector: [3 2 3]
The resultant split up is:
     1     0     0

     0     1

     1     0     0
于 2013-03-25T18:00:16.027 に答える