在MATLAB中我有制作3D阵列MATLAB
[Z,S]=meshgrid(0.01:0.01:1)
和我也有一个100000x2矩阵称为X,每一行有两个数据集 - p是第一列和x是第二。我想计算exp ^( - S * X(j,2))。(* Z.^X(j,1))其中j为行索引。结果应该是100x100x100000矩阵。然后这将沿着第三维平均,并且将产生网格图。我试过使用for循环
[Z,S]=meshgrid(0.01:0.01:1)
for j=1:100000
phi(j)=exp^(-S.*X(j,2)).*(Z.^X(j,1))
end
生成我需要的100x100x100000阵列。然而,这给了我错误
In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in phi (line 4)
phi(j)=exp(-S.*X(j,2)).*(Z.^X(j,1));
我不知道为什么会发生这种情况?任何人都可以找出一种更好的方法来尝试找到我想要的结果吗?因为我猜测可能有完全矢量化的解决方案(或者最少使用for循环)?
我有以下的指数麻烦 - 你能说多一点有关你想创建的对象?这就像一个二维指数随机噪声或什么? – ConfusinglyCuriousTheThird
您正试图将一个矩阵分配给'phi'中的一个点。因为这个,你显然会遇到尺寸不匹配的问题。 – rayryeng
@ anon0909没有那部分不是二维指数 - 我试图计算e ^( - sp)z^x,其中p和x是存储在数组X中的随机变量。已采取100000个样本,以便X的每一行都有p和x对应一个样本。我的问题中的j只是数字,我们正在看哪个特定的样本。然后,我将要对所有样本进行平均。 – Ansh