我的平均值大于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)
答案 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)
最小化内存分配和设置。