创建一个只包含1和1的数组1 * 3

时间:2015-11-06 10:01:18

标签: arrays matlab

我现在正在学习matlab。我在连续创建一个包含3个元素的数组时遇到了困难。 我写了一段代码

Source = randi([0,1],1,3);

给了我输出

[1,1,0] ..... [0,1,1] ...

但我愿意在输出中只得到一个1和两个零,而不是得到两个1和一个零。 我知道我错了,因为我正在使用 randi 函数,并给出0和0的随机值1和输出我得到[0,0,1] ... [1,0,0] ......也是。

我明确的问题是,如果我重复多次,只能获得一个1。例如我应该只得到[0,0,1]或[0,1,0]或[1,0,0]。

希望我能得到解决方案。 谢谢。 Ujwal

2 个答案:

答案 0 :(得分:3)

这是使用randperm的方式:

n = 3; %// total number of elements
m = 1; %// number of ones
x = [ones(1,m) zeros(1,n-m)];
x = x(randperm(numel(x)));

答案 1 :(得分:0)

以下是针对您的问题的几种替代解决方案。

创建零填充矩阵并将随机元素设置为一:

<span><span ng-repeat="location in mapping.locations">...</span></span>

创建x = zeros(1, 3); x(randi(3)) = 1; 1x3矩阵并随机eye

circshift