我必须生成一个由n x n个均匀分布的随机数(n从键盘上读取(组成的矩阵。这些数字应该在[0,1]之间,然后对这些数字进行平均>0.5.我试过以下几种:
value = 'Insert a value for n: ';
x = input(value);
matrix = rand(x,x);
matrix2(matrix < 0.5) = nan;
average = mean(matrix2, 'omitnan');
disp(average);
在我运行代码后,我得到的平均值是0,我不知道为什么。
在您的代码中,matrix2(matrix < 0.5) = nan;
行是您第一次提到matrix2
,因此这实际上创建了matrix2
。这个";创建";索引语法最终会创建与matrix
大小相同的matrix2
,用nan
填充matrix < 0.5
所在的元素,而实际上它会将其他元素保留为0
。
您想要的是从matrix2
开始作为matrix
的副本,然后设置元素,换句话说就是
matrix2 = matrix;
matrix2(matrix2 < 0.5) = nan;