新的随机条目和转移

  • 本文关键字:转移 随机 matlab
  • 更新时间 :
  • 英文 :


请任何人帮助我以32个元素的循环和数组的第一个条目将1个元素向右移动,每次获得新的rand编号 1,-1,-1和将其余要素转移到右边。我正在这样做,但它无法正常工作

 clc
    clear all    
    near_input=zeros(1,32);     %vector of 32 elements with all zeros
        y=2*round(rand(1,1))-1;     % random bernoulli sequence (+1,-1)
        z=[y near_input(1:end-1)];   

我建议您一次插入所有数字,避免转移。您可以像这样这样做:

z = 1-2*round(rand(1,32))

rand的输入是行和列的数量。因此,rand(1,32)与将32 rand(1,1)彼此相邻相同。并且为了记录,rand(1,1) == rand()

但是,如果您确实有以自己的方式做,则需要进行一些更改。以下工作(但确实是不好的代码)。

near_input = zeros(1,32);
for ii = 1:numel(near_input)
   y = 2*round(rand(1,1))-1;
   near_input = [y, near_input(1:end-1)]
end
% z = near_input;

您可以像这样生成整个序列:

y = sign(2*(rand(1, 32) - 0.5)); % 1x32 array of +-1's

或者,如果您坚持使用"推送权"(或更准确地" concat-left")一对一地创建它们:

y = [];
for unused = 1:32
    y = [sign(rand() - 0.5), y];
end

具有在循环中更改y的大小的缺点(如果使用大型数组,则真正的性能命中)。更好的方法是预先分配y,并通过索引分配:

y = zeros(1, 32);
for index = 32:-1:1
    y(index) = sign(rand() - 0.5);
end

将索引从32向下运行到1,将值分配到y中。

最新更新