w89986581 发表于 2006-12-20 17:52

请教生成高维问题

比如我有个一维数组k1,k2,...kn,我想生成一个三维数组M(1,:,:)均为k1,M(2,:,:)均为k2,即
for kk = 1:n
   for ii = 1:M,
      for jj = 1:M,
          M(kk,ii,jj) = k(kk);
      end
    end
end

请教是否有快速实现上述语句的命令?谢谢。

xjzuo 发表于 2006-12-20 21:18

回复

如果k已知, help reshape.
(没看清楚前面的说明,以为是一维数组变成三维.
楼下正解,但要稍改一下)
%%%%%%%%%%%%%%
Mk=zeros(n,M,M);
for i=1:n
    Mk(i,:,:)=k(i);
end
%%%%%%%%%%%%%%

[ 本帖最后由 xjzuo 于 2006-12-21 10:59 编辑 ]

stephenhope 发表于 2006-12-21 09:40

楼主循环jj,ii的循环变量的终止是不是写错了,和矩阵的M(I,J,K)重名了?
我假设就是 MAX了,
M=zeros(n,MAX,MAX);
for i=1:n
    M(I,:,:)=ki;
end
这样预先申请内存空间,而且循环的次数就少了点。
对reshape函数不是很熟悉,所以就斗胆些了自己的拙见了

[ 本帖最后由 ChaChing 于 2009-3-7 18:54 编辑 ]
页: [1]
查看完整版本: 请教生成高维问题