我想用matlab 来实现以下的小程序:随机产生一个布尔矩阵(要保证这个矩阵的每一列至少有一个1) 每次
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 14:27:03
我想用matlab 来实现以下的小程序:随机产生一个布尔矩阵(要保证这个矩阵的每一列至少有一个1) 每次
随机产生一个布尔矩阵(要保证这个矩阵的每一列至少有一个1)每次选择含有1最多的那一行并记录下来,将此行包含1的所有列删去,将此行删除.重复这个过程,直到矩阵为空阵.输出所有选择了的行.
小弟初学matlab,这个程序真的不知道怎么编,有会的大侠指教一下啊!下面是我下的部分代码,不知道怎么写了,参考.
A=rand(10,20)
A=fix(0.5+A)
H=A
while 1
B=sum(H,2)
[m,i]=max(B)
t=i
for j=1:20
if H(t,j)==1
H(:,j)=[]
end
end
H(t,:)=[]
end
随机产生一个布尔矩阵(要保证这个矩阵的每一列至少有一个1)每次选择含有1最多的那一行并记录下来,将此行包含1的所有列删去,将此行删除.重复这个过程,直到矩阵为空阵.输出所有选择了的行.
小弟初学matlab,这个程序真的不知道怎么编,有会的大侠指教一下啊!下面是我下的部分代码,不知道怎么写了,参考.
A=rand(10,20)
A=fix(0.5+A)
H=A
while 1
B=sum(H,2)
[m,i]=max(B)
t=i
for j=1:20
if H(t,j)==1
H(:,j)=[]
end
end
H(t,:)=[]
end
你这个程序有问题.
问题在于你没有把握好算法.你犯的错误在于你没有明白每一次循环删除都会使得矩阵的维数发生变化:比如“for j=1:20”,这里你认为矩阵的列一直为20.显然这是错误的.
显然这是个死循环,给出参考程序:
function H = main()
A=rand(10,20);
A=fix(0.5+A);
H=A;
while 1
B=sum(H,2);
[m,i]=max(B);
t=i;
q=0;
for j=1:20
if H(t,j)==1
H(:,j)=zeros(10,1);
end
end
H(t,:)=zeros(1,20);
end
end
%这里我用0矩阵代替空矩阵,很好的解决了问题.用空矩阵是不能解决问题
的.因为就算可以循环到最后,到最后变为一空矩阵,j为0,又“for j=1:w”(其中w可变),j最小为1,这显然是不能取到的.不知道你为什么会弄个这么奇怪的程序来,呵呵.
问题在于你没有把握好算法.你犯的错误在于你没有明白每一次循环删除都会使得矩阵的维数发生变化:比如“for j=1:20”,这里你认为矩阵的列一直为20.显然这是错误的.
显然这是个死循环,给出参考程序:
function H = main()
A=rand(10,20);
A=fix(0.5+A);
H=A;
while 1
B=sum(H,2);
[m,i]=max(B);
t=i;
q=0;
for j=1:20
if H(t,j)==1
H(:,j)=zeros(10,1);
end
end
H(t,:)=zeros(1,20);
end
end
%这里我用0矩阵代替空矩阵,很好的解决了问题.用空矩阵是不能解决问题
的.因为就算可以循环到最后,到最后变为一空矩阵,j为0,又“for j=1:w”(其中w可变),j最小为1,这显然是不能取到的.不知道你为什么会弄个这么奇怪的程序来,呵呵.
我想用matlab 来实现以下的小程序:随机产生一个布尔矩阵(要保证这个矩阵的每一列至少有一个1) 每次
MATLAB实现:一个1行26列的矩阵,要把每一个数赋值给依次26个字母,能否用循环语句来实现,
matlab矩阵分块对于一个矩阵A,随机选取一些列作为矩阵B,剩下的列作为矩阵C,怎么用matlab实现
用matlab能不能随机生成一个矩阵,使这个矩阵的每一行都等于1?急求~谢谢!
怎样用matlab实现:一个列向量与矩阵的每一列做点乘?
怎样用matlab实现:一个列向量与矩阵的每一列做点乘?
如何用MATLAB来把矩阵的每一列抽出来,来组成一个一列的矩阵哦
Matlab产生有要求的随机矩阵
我想随机生成一个矩阵,怎样能让他的行列式为1或-1?使用matlab实现
谁能帮我用c++生成一个随机矩阵,这个程序产生的矩阵的数都是整数[0,100].而且要大约70-80%为0
matlab中如何实现一个矩阵的每一列数据对应相加并输出新的矩阵啊.,比如[1,2,3; 2,4,6]
请问用MATLAB语言表示一个729行6列的矩阵,且每一个数字都由0,1,2这三个数字中选取?这个程序要怎么写?