lpp8515 发表于 2009-10-22 09:20

请教让n个C组成一个矩阵A输出问题

Ln为一数组,比如Ln=,B=,一共100个0,当Ln取第一个数时,比如20,B中前20个数为1,当Ln取第二个数时,比如40,B中前40个数为1,以此类推,下面是我写的函数,但是有错误,不知道怎么改正。
function A=tw;
B=zeros(1,100); C=[]; =size(Ln);
for i=1:n
    B(1,1:Ln(i))=1; C(i)=reshape(B,10,10);
end
j=1;
if(j<n)
    A=;
end
第七行出错,我想把每次求得的B值以10*10放在C里面,然后让n个C组成一个矩阵A输出,请教高手第七行该怎么写?谢谢

[ 本帖最后由 ChaChing 于 2010-4-15 15:57 编辑 ]

friendchj 发表于 2009-10-22 13:05

help cell

ChaChing 发表于 2009-10-22 14:41

除了friendchj的好建议外, 亦可采用多维, 如
=size(Ln); C=zeros(10,10,n);
for i=1:n
    B=zeros(1,100);B(1,1:Ln(i))=1; C(:,:,i)=reshape(B,10,10);
end
j=1;
if(j<n), A=; end

[ 本帖最后由 ChaChing 于 2009-10-22 20:30 编辑 ]

lpp8515 发表于 2009-10-22 16:15

多谢两位!我将程序做了改进:
function A=tw(Ln);
B=zeros(1,100); =size(Ln); C=cell(1,n);
for i=1:n
    B(1,1:Ln(i))=1;C{1,i}=reshape(B,10,10);
end
A=cell2mat(C);
但是当n<=3时,结果是正确的,当n值较大时,程序运行有结果,但是是错的,比如
Ln=[ 91   78   60   40   22    9    1    1    9   22   40   60   78   91 99   99];
结果只有C{1,1},C{1,15}和C{1,16}是正确的,中间的都不对,请教一下这是怎么回事?谢谢

应该是for循环出了问题,但是该怎么改呢?望高手指点

[ 本帖最后由 ChaChing 于 2009-10-22 20:37 编辑 ]

ChaChing 发表于 2009-10-22 20:27

个人在3F亦犯相同错误, 未重覆归零:@L
=size(Ln); C=cell(1,n);
for i=1:n
   B=zeros(1,100); B(1:Ln(i))=1; C{i}=reshape(B,10,10);
end
A=cell2mat(C);

[ 本帖最后由 ChaChing 于 2009-10-22 20:38 编辑 ]

lpp8515 发表于 2009-10-22 21:11

Thanks,ChaChing!
页: [1]
查看完整版本: 请教让n个C组成一个矩阵A输出问题