创建一个特定长度的变量,并用0和1填充它

时间:2012-01-26 08:51:18

标签: matlab

我正在尝试使用MATLAB来模拟通信编码和解码机制。因此,所有数据都是0或1。

最初我创建了一个特定长度的矢量,并使用

填充0和1
source_data = rand(1,8192)<.7;

对于编码,我需要多次执行XOR操作,这是我能够做到的,没有任何问题。

对于解码操作,我需要实现高斯消除方法来求解方程组,其中我意识到这个向量表示不是很有用。我尝试使用strcat使用for循环将多个0和1附加到变量a:

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.我不确定我哪里出错或者如何最好地解决这个问题。

2 个答案:

答案 0 :(得分:2)

您是否在示例代码之前重新初始化a?听起来好像你曾经两次运行而没有清除a,或者已经开始a已经8192长。

在Matlab中像这样生成一个数组效率很低。你通常可以找到一种矢量化方式来做这样的事情。在你的情况下,要获得一个8192长的交替零和0的数组,你可以这样做。

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

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

答案 1 :(得分:1)

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

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

请注意cellfun连接统一输出。