【发布时间】:2015-03-21 04:16:42
【问题描述】:
问题
我有一个向量 w 包含 n 元素。我事先不知道n。
我想生成一个n维网格g,其值范围从grid_min到grid_max,并获得w和g的“维数”乘积。
如何为任意n 执行此操作?
示例
为简单起见,假设grid_min = 0 和grid_max = 5。
案例:n=1
>> w = [0.75];
>> g = 0:5
ans =
0 1 2 3 4 5
>> w * g
ans =
0 0.7500 1.5000 2.2500 3.0000 3.7500
案例:n=2
>> w = [0.1, 0.2];
>> [g1, g2] = meshgrid(0:5, 0:5)
g1 =
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
0 1 2 3 4 5
g2 =
0 0 0 0 0 0
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
4 4 4 4 4 4
5 5 5 5 5 5
>> w(1) * g1 + w(2) * g2
ans =
0 0.1000 0.2000 0.3000 0.4000 0.5000
0.2000 0.3000 0.4000 0.5000 0.6000 0.7000
0.4000 0.5000 0.6000 0.7000 0.8000 0.9000
0.6000 0.7000 0.8000 0.9000 1.0000 1.1000
0.8000 0.9000 1.0000 1.1000 1.2000 1.3000
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000
现在假设用户传入向量w,我们不知道它包含多少元素(n)。如何创建网格并获取产品?
【问题讨论】:
-
对如此清晰表达的问题表示敬意
-
如果您遇到“大”
n的内存问题(无论如何,这似乎很快就会爆炸......)如果您采取 Luis,您可能会更进一步>' 方法并将其修改为仅生成nggs 之一,并在排列时将其汇总到for-loop 中。
标签: matlab matrix matrix-multiplication