Matlab的。在2D阵列中存储2D阵列

时间:2016-03-25 17:19:03

标签: 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)

我希望将此函数沿“T”维度

存储在3D数组“c”中
k    = 0.001;
Tend = 1; 
T    = 0:k:Tend;
c    = zeros(length(T),length(x),length(y));

我试过的是,

c(1:end,:,:) = f;

但它不起作用。 ¿我怎么知道如何在这个3D阵列中存储相同的功能?

提前致谢。

1 个答案:

答案 0 :(得分:0)

下标维度不匹配是因为您试图将100 * 100元素压缩到1001 x 100 x 100矩阵中。

您可以通过以下方式执行此任务:

c(1,:,:) = f;
c(2,:,:) = f;
...
c(1001,:,:) = f;

但你可以使用repmat

完成同样的事情
c = repmat(reshape(f, [1, size(f)]), [numel(T), 1 1]);

bsxfun

c = bsxfun(@plus, zeros(numel(T), 1), reshape(f, [1, size(f)]));