Matlab 如何使向量的k个第一元素的大小为N

Matlab 如何使向量的k个第一元素的大小为N,matlab,permutation,Matlab,Permutation,我用randperm对向量中的元素进行随机排列。然而,我有一个问题,我有一个大小为N的向量,我只想要随机排列的k个元素,而N-k元素是不变的。如何用matlab代码实现 例如: A = [1 1 1 1 0 0 0 0 0 0] % N=10 array length; d=4 number of element equal to 1 in the first k elements, k=7 期望输出: A_randperm=[0 1 1 0 1 0 1 0 0 0] % Random per

我用randperm对向量中的元素进行随机排列。然而,我有一个问题,我有一个大小为N的向量,我只想要随机排列的k个元素,而N-k元素是不变的。如何用matlab代码实现

例如:

A = [1 1 1 1 0 0 0 0 0 0]
% N=10 array length; d=4 number of element equal to 1 in the first k elements, k=7
期望输出:

A_randperm=[0 1 1 0 1 0 1 0 0 0]
% Random permutation elements of 1st to 7th, 8th to 10th elements stay the same
这是我的密码

d=4;
N=10;
k=7;
column = [ones(1,d) zeros(1,N-d)];% create random vector without permutation

% Random permutation
.... 

如评论中所述:

A(1:k) = A(randperm(k));

完成工作。

如评论中所述:

A(1:k) = A(randperm(k));

做这项工作。

对@JanDeGier的解决方案有点不同:

x = 1:10;
k = 7;

x = [x(randperm(k)) x(k+1:end)];

@JanDeGier溶液的细微变化:

x = 1:10;
k = 7;

x = [x(randperm(k)) x(k+1:end)];

A1:k=Arandpermk@请将JandeGier帖子作为答案A1:k=Arandpermk@请把JandeGier的帖子作为答案