2014-01-11 20 views
0

我的平均值大于0,然后放100个,否则放100个零,但我不能让它工作。如何在MATLAB中存储一个和零的数组

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) 
+0

解调也可以是二维阵列。 – User1551892

回答

3

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

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

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

同样地,对于零的情况下,在那里你目前只是分配一个0

+0

这工作,谢谢 – Hamoudy

1

假设我= 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) 

最大限度地减少内存的分配和设置。

+0

没有工作,对不起,我得到这个http://prntscr.com/2ieea3 – Hamoudy

+0

'我'的价值是什么? – damienfrancois

+0

这个:for i = 1:1:8; – Hamoudy

相关问题