在Matlab中,我想知道如何为任何给定大小的矩阵随机分配矩阵内的值?
例如:
Enter non-zero elements in 3*3 matrix? 3
1
4
7
这些元素随机放置在3 * 3矩阵中,其余6个元素变为零。
通常,对于我们在矩阵中输入的一些非零元素,矩阵中的其余元素变为零。
如何在Matlab中为上述示例编写代码?我必须输入非零元素的数量,并在矩阵内随机分配输入值,而不指定任何特定的行或列。
答案 0 :(得分:5)
V = [1,4,7];
M = zeros(3);
M(randperm(numel(M), numel(V))) = V
如果您有旧版本的Matlab(请参阅注释,这也适用于您使用Octave),那么您可以尝试:
V = [1,4,7];
M = zeros(3);
I = randperm(numel(M));
M(I(1:numel(V))) = V