Arrays Matlab。在三维阵列中存储二维阵列
我已经定义了以下2D函数Arrays Matlab。在三维阵列中存储二维阵列,arrays,matlab,matrix,Arrays,Matlab,Matrix,我已经定义了以下2D函数 Ngrid = 100; h = 1/(Ngrid-1); x = 0:h:1; y = 0:h:1; [x y] = meshgrid(x,y); f = exp(-((1-x).^2)./0.45) 我想把这个函数存储在3D数组“c”中,沿着“T”维 k = 0.001; Tend = 1; T = 0:k:Tend; c = zeros(length(T),length(x),length(y)); 我试过的是 c(
Ngrid = 100;
h = 1/(Ngrid-1);
x = 0:h:1;
y = 0:h:1;
[x y] = meshgrid(x,y);
f = exp(-((1-x).^2)./0.45)
我想把这个函数存储在3D数组“c”中,沿着“T”维
k = 0.001;
Tend = 1;
T = 0:k:Tend;
c = zeros(length(T),length(x),length(y));
我试过的是
c(1:end,:,:) = f;
但它不起作用。?知道如何在这个3D阵列中存储相同的功能吗
提前感谢。下标尺寸不匹配是因为您试图将
100*100
元素压缩到1001x100
矩阵中
您可以通过以下方式完成此任务:
c(1,:,:) = f;
c(2,:,:) = f;
...
c(1001,:,:) = f;
但是你也可以通过使用
或
您的功能
f
仅取决于x
(无y
)。。这真的是一个2d函数吗?它不工作是什么意思?是的,它是一个100x100数组,因为x是由meshgrid生成的。此外,如果您不使用surf(f),则它是一个2D函数,尽管它与y坐标无关。我想做的是将这个100x100数组存储在c(沿T)的每个位置。我得到的错误是典型的“下标赋值维度不匹配”。对不起,我对2D和3D模型完全不熟悉。非常感谢!!现在代码工作了;我理解我的错误。
c = repmat(reshape(f, [1, size(f)]), [numel(T), 1 1]);
c = bsxfun(@plus, zeros(numel(T), 1), reshape(f, [1, size(f)]));