Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 创建一个特定长度的变量,并用0';s和1';s_Matlab - Fatal编程技术网

Matlab 创建一个特定长度的变量,并用0';s和1';s

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中以这样的方式在循环中增长数组是低效的。

我试图用MATLAB来模拟一个通信编码和解码机制。因此,所有数据都将是0或1

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

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)