如何在MATLAB中存储1和0的数组

时间:2014-01-11 13:41:21

标签: matlab if-statement

我的平均值大于0然后放100个,否则放100个零,但我不能让它工作。

zero = zeros(1,100);
one = ones(1, 100);
demodulation = [zero zero zero zero zero zero zero zero];

for i=1:1:8;
 if (average > 0)
        demodulation(i) =  ones(1,100);
    else
        demodulation(i) = zeros(1,1);
    end

但我在MATLAB中遇到这个错误: http://prntscr.com/2ie6k1

In an assignment A(I) = B, the number of elements in B and I must be the same.

Error in roman_test (line 50)
        demodulation(i) = ones(1,100)

2 个答案:

答案 0 :(得分:3)

从那个错误中,我猜测i是一个索引。您不能将1x100向量存储在另一个向量的单个元素中 - 您需要指定100个目标向量元素来存储它。

假设i在1到8之间,你想要做的是:

demodulation((1:100) + (i-1)*100) = ones(1,100);

并且类似于零情况,您目前只是分配一个0

答案 1 :(得分:1)

假设i = 0:100:800,你需要更像

的东西
   demodulation(i+1:i+100) = 1;

如果i=1:8,那么您需要:

   demodulation(1+(i-1)*100:i*100) = 1;

反过来另一种情况。

请注意,由于average似乎不依赖i,您只需编写

zero = zeros(1,100);
one = ones(1, 100);
demodulation = [zero zero zero zero zero zero zero zero] + average>0;

或者你可以

if average>0
    demodulation = ones(1,800)
else
    demodulation = zeros(1,800)

最小化内存分配和设置。