在matlab中定义一个函数给一个三维函数赋值 要求这个三维函数每个位置的值是依次递增?

怎么做呀 比如A(2,2,2)=1 那么经过定义函数赋值后 这个数组的所有值依次为
A(:,:,1) A(:,:,2)
2 4 10 12
6 8 14 16
求大神帮个忙谢谢了

第1个回答  推荐于2016-11-22
假如你需要
A(a,b,c)=x

那么,可以这样
s=a*b*c;
A=x:2:(x+2*s-2);
A=reshape(A,[a b c]);
A=permute(A,[2 1 3]);

例子
a=2;b=2;c=2;x=2;
s=a*b*c;
A=x:2:(x+2*s-2);
A=reshape(A,[a b c]);
A=permute(A,[2 1 3]);

>> A

A(:,:,1) =

2 4
6 8

A(:,:,2) =

10 12
14 16追问

看不懂 能解释下吗? 能用别的比较简单点的方法么? 比如用while循环或者for循环来完成

追答

循环这样应该比较好理解,不过效率较低
A=zeros(a,b,c); %先确定A的大小,分配固定内存
x=2;
for k=1:c
for i=1:a
for j=1:b
A(i,j,k)=x;
x=x+2;
end
end
end

追问

我按照你的输入了 Undefined function or variable 'a' 这是它提示的 哪错了?

追答

这里的a,b,c是你要的矩阵的大小啊,x是第一个数啊
你要线定义再使用啊
例如你要的例子
要先给他们赋值再使用

a=2;b=2;c=2;x=2;
A=zeros(a,b,c);
for k=1:c
for i=1:a
for j=1:b
A(i,j,k)=x;
x=x+2;
end
end
end

追问

恩恩 我刚发玩就知道自己笨了 谢谢了 我知道怎么用了 真的谢谢啦

本回答被提问者采纳
第2个回答  2014-08-09
数组的维数没有什么要求?追问

三维函数呀 恩 每一维都不超过10 吧 最好能用简单点的方法 比如while循环 给每个数依次赋值 然后最好能不用matlab里本身定义的函数 因为我刚学matlab不久 很多不懂的 谢谢啦

相似回答