matlab中 如果要产生[3,8]之间精确到小数点后第三位的随机数 并且求出矩阵内大于5个元素的个数

按 当元素大于5时令其为1 否则为0 然后用sum求和 这方法怎么做

clc
N=10;
num=0;
X=3+abs(((8-3)/2)*randn(N))%正态随机N×N
for i=1:N
for j=1:N
X(i,j)=vpa(X(i,j),4);
if X(i,j)>5
num=num+1;
end
end
end
X
num追问

如果按 当元素大于5时令其为1 否则为0 然后用sum求和 这方法怎么做

追答

clc
N=10;
X=3+abs(((8-3)/2)*randn(N))%正态随机N×N
for i=1:N
for j=1:N
X(i,j)=vpa(X(i,j),4);
if X(i,j)>5
X(i,j)=1;
else
X(i,j)=0;
end
end
end
X
num=sum(sum(X))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-05
A=eval(vpa(rand(1,10)*5+3,4));
B=A>5;
N=sum(B)追问

这样求出来好像不是大于5的元素个数吧

追答

是的,不可以打开A数一下!

追问

我是要求出个数 老师提示说可以用逻辑符号 令大于5的元素为1 小于的为0 然后用两次sum求和来求出和 也就等于大于5的元素个数了 就是不知道怎么写过程

追答

这里使用的大于号>就是逻辑符号。B就是把大于5的元素为1 小于的为0的结果,当然我的例子是一维的,如果是二维的话

A=eval(vpa(rand(3,10)*5+3,4))
B=A>5;
N=sum(sum(B))

相似回答