用期望的一个标准创建一个正向量

时间:2016-06-03 15:11:13

标签: matlab

我想在Matlab中生成一个向量,向量应该是非负的,并且一个范数应该等于我可以输入的东西(比如说1)。

我尝试在线搜索,但无法提出令人满意的建议。

2 个答案:

答案 0 :(得分:2)

您可以使用rand生成随机向量,然后使用norm来计算向量的范数,通过该范数可以划分所有元素。然后,您可以将结果乘以输入值,以将其缩放到所需的长度。

如果你想要L1规范,你可以使用以下内容。

% This will use the L1 norm
vec = rand(1, 10);
vec = vec * scale ./ norm(vec, 1);

这可以推广到p范数,其中包含以下内容:

vec = rand(1, 10);
vec = vec * scale ./ norm(vec, p);

答案 1 :(得分:1)

随机生成01之间的元素(即定义为非负数):

v = rand(n,1)

然后按照它的一个标准(即它现在有1的一个标准)并乘以你想要的一个标准k来扩展它:

V = k*v/norm(v,1)