2012-01-26 16 views
0

我正在尝试使用MATLAB来模拟通信编码和解码机制。因此,所有的数据将是0或1。创建特定长度的变量并使用0和1填充

起初我创建了一个特定长度的载体,用0和使用

source_data = rand(1,8192)<.7; 

编码,我需要进行XOR运算多次,我能没有任何问题做1的填充。

对于解码操作,我需要实现高斯消元方法来求解这组方程,其中我意识到这个向量表示不是很有帮助。我试图用strcat一个利用多个0和1次的追加到变量的for循环:

for i=1:8192 
    if(mod(i,2)==0) 
     a = strcat(a,'0'); 
    else 
     a = strcat(a,'1'); 
    end 
    i = i+1; 
    disp(i); 
end 

,当我试图在此之后length(a)我发现,长度为16384,这是两次8192我不知道哪里出错或如何最好地解决这个问题。

回答

1

这里可能有几个答案/问题。首先,如何从包含{0,1}元素的任意向量转换为字符串?一种方法是使用cellfun与转换器num2str

dataDbl = rand(1,8192)<.7;      %see the original question 
dataStr = cellfun(@num2str, num2cell(dataDbl)); 

注意cellfun符连接均匀输出。

+0

这对于此信息非常有帮助 – bhavs

2

您是否在示例代码之前重新初始化了a?听起来就像你跑了两遍,没有清除a之间,或开始a已经8192长。

在Matlab中像这样在循环中生长数组效率不高。你通常可以找到一个矢量化的方式来做这样的事情。在你的情况下,为了得到8192长的交替零和零的数组,你可以这样做。

len = 8192; 
a = double(mod(1:len,2) == 0); 

逻辑可能更适合您的代码,因此您可以跳过double()调用。

相关问题