如何检查我的矩阵是否可以被 12 整除
How to check my matrix if its divisible by 12
我是 matlab 的新手,我 运行 遇到了一个小问题。我想检查生成随机数的矩阵是否可以被 12 整除。然后我想列出可以被 12 整除的数字的数量以及它们的总和。
clc
clear
format compact
a=4
b=0
N=50+a
R=randi([100+a,159+b], 1, N) % generate random no. from 100+a to 159 on a matrix 1xN
s1=0
N1=0
for i = 1
for j= 1:N
if rem(R,12)==0
N1=N1+1;
s1=s1+R(i,j);
else
N1=N1+0;
s1=s1+0;
end
end
end
numberof1=N1
sum1=s1
您的代码无法正常工作,因为您正在调用 rem(R, 12)
(所有 元素的剩余部分)而不是 特定元素的剩余部分 (rem(R(i,j), 12)
).
不过,更好的方法是删除 for
循环并生成一个逻辑矩阵,其大小为 R
,即 true
,当该数字可被 12 整除且 false
否则将整个矩阵传递给 rem
.
is_divisible_by_12 = rem(R, 12) == 0;
然后我们可以使用这个逻辑数组作为 R
的索引来计算它们的总和
subset = R(is_divisible_by_12);
number = numel(subset);
s1 = sum(subset);
我是 matlab 的新手,我 运行 遇到了一个小问题。我想检查生成随机数的矩阵是否可以被 12 整除。然后我想列出可以被 12 整除的数字的数量以及它们的总和。
clc
clear
format compact
a=4
b=0
N=50+a
R=randi([100+a,159+b], 1, N) % generate random no. from 100+a to 159 on a matrix 1xN
s1=0
N1=0
for i = 1
for j= 1:N
if rem(R,12)==0
N1=N1+1;
s1=s1+R(i,j);
else
N1=N1+0;
s1=s1+0;
end
end
end
numberof1=N1
sum1=s1
您的代码无法正常工作,因为您正在调用 rem(R, 12)
(所有 元素的剩余部分)而不是 特定元素的剩余部分 (rem(R(i,j), 12)
).
不过,更好的方法是删除 for
循环并生成一个逻辑矩阵,其大小为 R
,即 true
,当该数字可被 12 整除且 false
否则将整个矩阵传递给 rem
.
is_divisible_by_12 = rem(R, 12) == 0;
然后我们可以使用这个逻辑数组作为 R
subset = R(is_divisible_by_12);
number = numel(subset);
s1 = sum(subset);