24小时热门版块排行榜    

查看: 4531  |  回复: 7

guiqulai2046

新虫 (小有名气)

[求助] 如何将一个向量赋值给三维数组中的一部分 已有2人参与

假设有一个三维数组A=zeros(10,10,3),和一个向量b=[1 1 0], 现在想把A(1:2, 1:2, 赋值成b,即A(1,1,=A(1,2,=A(2,1,=A(2,2,=b。
想用快捷的方法实现上述功能,因为实际中A很大,不能一个一个的写出来。用A(1:2, 1:2, =b出错,显示维数不匹配。
请指点,谢谢大家。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

baobiao007

木虫 (职业作家)

中国特色

【答案】应助回帖

感谢参与,应助指数 +1
把矩阵中的一部分数据赋给一个向量,这必须满足一个前提啊:两者的数据个数一样多
我同意叔本华的观点,人们投身艺术和科学领域的强烈愿望之一就是逃离痛苦、残酷和枯燥无味的现实生活,逃离自己飘忽不定的七情六欲的桎梏。--爱因斯坦
2楼2014-05-17 18:26:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guiqulai2046

新虫 (小有名气)

谢谢楼上,不过我是需要把向量赋给矩阵中的一部分。
而且我发现上面提问的帖子里冒号+括号都变成笑脸了,救命。。重发一次:

假设有一个三维数组A=zeros(10,10,3),和一个向量b=[1 1 0], 现在想把A(1:2, 1:2,:) 赋值成b,即A(1,1,:)=A(1,2,:)=A(2,1,:)=A(2,2,:)=b。
想用快捷的方法实现上述功能,因为实际中A很大,不能一个一个的写出来。用A(1:2, 1:2,  =b出错,显示维数不匹配。
请指点,谢谢大家。
3楼2014-05-17 18:32:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guiqulai2046

新虫 (小有名气)

假设有一个三维数组A=zeros(10,10,3),和一个向量b=[1 1 0], 现在想把A(1:2, 1:2,:) 赋值成b,即A(1,1,:)=A(1,2,:)=A(2,1,:)=A(2,2,:)=b。
想用快捷的方法实现上述功能,因为实际中A很大,不能一个一个的写出来。用A(1:2, 1:2, :)=b出错,显示维数不匹配。
请指点,谢谢大家。
4楼2014-05-17 18:33:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
guiqulai2046: 金币+5, 有帮助 2014-05-18 09:32:50
用个循环吧
for ii = 1:2
for jj = 1:2
A(ii,jj, = b;
end
end
What would Jesus do?
5楼2014-05-17 20:08:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

引用回帖:
5楼: Originally posted by dnp at 2014-05-17 20:08:15
用个循环吧
for ii = 1:2
for jj = 1:2
A(ii,jj, = b;
end
end

CODE:
for ii = 1:2
for jj = 1:2
A(ii,jj,:) = b;
end
end

What would Jesus do?
6楼2014-05-17 20:09:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guiqulai2046

新虫 (小有名气)

引用回帖:
6楼: Originally posted by dnp at 2014-05-17 20:09:15
for ii = 1:2
for jj = 1:2
A(ii,jj, = b;
end
end...

谢谢。循环的办法我也想过,不过还是觉得要是有更简洁的办法就更好了。能不能用矩阵运算的方式把向量b=[1 1 0]变成三维数组B、数组中每个B(i,j,:)都是b呢?这样就可以把B赋给A中的一部分了。请指点。多谢!
7楼2014-05-18 09:31:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dnp

荣誉版主 (知名作家)

小木虫浪子

优秀版主

引用回帖:
7楼: Originally posted by guiqulai2046 at 2014-05-18 09:31:28
谢谢。循环的办法我也想过,不过还是觉得要是有更简洁的办法就更好了。能不能用矩阵运算的方式把向量b=变成三维数组B、数组中每个B(i,j,:)都是b呢?这样就可以把B赋给A中的一部分了。请指点。多谢!...

三维矩阵的赋值是比较麻烦的,不像二维矩阵。这里可以有些参考:http://www.mathworks.com/matlabc ... /view_thread/258854;如果计算量很大,用reshape或者repmat,我觉得还不如直接用for循环,这样速度还快一些。很多时候for循环并不一定比直接的一条命令慢。
What would Jesus do?
8楼2014-05-18 14:27:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 guiqulai2046 的主题更新
信息提示
请填处理意见