Matlab 创建一个特定长度的变量,并用0';s和1';s
我试图用MATLAB来模拟一个通信编码和解码机制。因此,所有数据都将是0或1 最初,我创建了一个特定长度的向量,并使用Matlab 创建一个特定长度的变量,并用0';s和1';s,matlab,Matlab,我试图用MATLAB来模拟一个通信编码和解码机制。因此,所有数据都将是0或1 最初,我创建了一个特定长度的向量,并使用 source_data = rand(1,8192)<.7; 当我尝试length(a)之后,我发现长度是16384,是8192的两倍。我不确定哪里出了问题,也不知道如何最好地解决这个问题。在示例代码之前,您是否重新初始化了a?听起来像是在没有清除中间的a的情况下运行了两次,或者是从a开始运行的,a已经8192长了 在Matlab中以这样的方式在循环中增长数组是低效的。
source_data = rand(1,8192)<.7;
当我尝试
length(a)
之后,我发现长度是16384,是8192的两倍。我不确定哪里出了问题,也不知道如何最好地解决这个问题。在示例代码之前,您是否重新初始化了a
?听起来像是在没有清除中间的a
的情况下运行了两次,或者是从a
开始运行的,a已经8192长了
在Matlab中以这样的方式在循环中增长数组是低效的。你通常可以找到一种矢量化的方法来做这样的事情。在您的例子中,要得到一个8192长的交替1和0数组,您可以这样做
len = 8192;
a = double(mod(1:len,2) == 0);
逻辑可能更适合您的代码,因此您可以跳过
double()
调用。在示例代码之前是否重新初始化了a
?听起来像是在没有清除中间的a
的情况下运行了两次,或者是从a
开始运行的,a已经8192长了
在Matlab中以这样的方式在循环中增长数组是低效的。你通常可以找到一种矢量化的方法来做这样的事情。在您的例子中,要得到一个8192长的交替1和0数组,您可以这样做
len = 8192;
a = double(mod(1:len,2) == 0);
逻辑可能更适合您的代码,因此您可以跳过
double()
调用。这里可能有一些答案/问题。首先,如何从包含{0,1}
元素的任意向量变为字符串?一种方法是将cellfun
与转换器num2str
一起使用:
dataDbl = rand(1,8192)<.7; %see the original question
dataStr = cellfun(@num2str, num2cell(dataDbl));
dataDbl=rand(18192)这里可能有一些答案/问题。首先,如何从包含{0,1}
元素的任意向量变为字符串?一种方法是将cellfun
与转换器num2str
一起使用:
dataDbl = rand(1,8192)<.7; %see the original question
dataStr = cellfun(@num2str, num2cell(dataDbl));
dataDbl=rand(18192)