声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 987|回复: 5

[编程技巧] 请教让n个C组成一个矩阵A输出问题

[复制链接]
发表于 2009-10-22 09:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

[ 本帖最后由 ChaChing 于 2010-4-15 15:57 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-10-22 13:05 | 显示全部楼层
help cell
发表于 2009-10-22 14:41 | 显示全部楼层
除了friendchj的好建议外, 亦可采用多维, 如
[m,n]=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=[C(:,:,j),C(:,:,j+1)]; end

[ 本帖最后由 ChaChing 于 2009-10-22 20:30 编辑 ]
 楼主| 发表于 2009-10-22 16:15 | 显示全部楼层
多谢两位!我将程序做了改进:
function A=tw(Ln);
B=zeros(1,100); [m,n]=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 编辑 ]
发表于 2009-10-22 20:27 | 显示全部楼层
个人在3F亦犯相同错误, 未重覆归零:@L
[m,n]=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 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2009-10-22 21:11 | 显示全部楼层
Thanks,ChaChing!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-11 15:43 , Processed in 0.074002 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表