声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1786|回复: 12

[编程技巧] 怎么把矩阵放入一个数组中?

[复制链接]
发表于 2007-11-15 14:03 | 显示全部楼层 |阅读模式

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

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

x
function horizontal_part = horizontal_partition(m, y)
position_y = y;
[a, n] = size(position_y);
for i = 1 : n -1
    horizontal_part(i) = m(position_y(i) + 1 : position_y(i + 1) - 1, :)
end;

这里面horizontal_part(i)提示错误,是不是不能这样用,请问应该怎么改??

[ 本帖最后由 eight 于 2007-11-15 15:19 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-11-15 14:07 | 显示全部楼层
根据搂住的程序推断:[a, n] = size(position_y);说明position_y是二维矩阵吧,你在出错那一句把它作为一维调用呢?

另:类似问题请把报错的提示发上来,
 楼主| 发表于 2007-11-15 14:18 | 显示全部楼层
报错:

??? Index exceeds matrix dimensions.
Error in ==> horizontal_partition at 7
    horizontal_part(i) = m(position_y(i) + 1 : position_y(i + 1) - 1, :)
Error in ==> test_pdf417 at 7
horizontal_image = horizontal_partition(gray, position_horizontal);

不过只要将horizontal_part(i)改成horizontal_part就可以正常运行,但是只能得到最后一个结果。
 楼主| 发表于 2007-11-15 14:19 | 显示全部楼层
position_y是一维的,所以这样调用没有错。
 楼主| 发表于 2007-11-15 14:31 | 显示全部楼层
这里存在的问题好像是不能把一个矩阵赋值给一个矩阵元素.
是这样吗,请问怎么解决呢?
 楼主| 发表于 2007-11-15 14:46 | 显示全部楼层

怎么把矩阵放入一个数组中?

我想编一个程序,返回一个数组,数组的元素是几个数值矩阵,请问怎么实现?

我这样写:

for i = 1 : 5
    a(i) =zeros(2,2);
end

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

请问怎么实现我说的功能。

[ 本帖最后由 eight 于 2007-11-15 15:14 编辑 ]
发表于 2007-11-15 14:53 | 显示全部楼层

直接定义个多维数组就ok了

a=rand(2,3,4)
a(:,:,1) =
         0.846221417824324         0.202647357650387         0.838118445052387
         0.525152496305172         0.672137468474288        0.0196395138648175
a(:,:,2) =
         0.681277161282135         0.831796017609607         0.709471392703387
         0.379481018027998         0.502812883996251         0.428892365340997
a(:,:,3) =
         0.304617366869394         0.193431156405215         0.302764400776609
         0.189653747547175         0.682223223591384         0.541673853898088
a(:,:,4) =
         0.150872976149765         0.378373000512671         0.853655130662768
         0.697898481859863          0.86001160488682         0.593562912539682
发表于 2007-11-15 15:00 | 显示全部楼层
for i = 1 : 5
    a{i} =zeros(2,2);
end

doc cell

评分

1

查看全部评分

 楼主| 发表于 2007-11-15 15:18 | 显示全部楼层
知道了啊,谢谢啊~
 楼主| 发表于 2007-11-15 15:59 | 显示全部楼层
问题又来了~
如果是一个程序中,我需要把一个cell数组作为返回值,应该怎么实现呢?

麻烦了啊!
发表于 2007-11-15 16:10 | 显示全部楼层
 楼主| 发表于 2007-11-15 16:27 | 显示全部楼层
我知道了,刚才自己弄错了~
 楼主| 发表于 2007-11-15 16:28 | 显示全部楼层
谢谢大家这么热心!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-18 15:26 , Processed in 0.067895 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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