跪求matlab怎么在读每一个n*m矩阵元素中j行某a元素后,如果非0,把另外n*m零矩阵中第j行第a个元素0变1

a为整数,且如果a为0则跳过继续作下一个元素。例如【2 0 1】则输出等于【1 1 0】
3 0 1 1 0 1

第1个回答  2013-05-25
假设a是你说的的矩阵,你自己定义。b是待变换的0矩阵。

b=zeros(n,m);
for jj=1:n
for ii=1:m
if a(jj,ii)~=0
b(jj,ii)=1;
end
end
end追问

再请问下,最后加一句输出b矩阵怎么写呀加进去~。~还有这个算法为什么a=[1 2 3;2 0 1;3 0 1]时后输出的b的第二行有问题呢

追答

a =
1 2 3
2 0 1
3 0 1
b =
1 1 1
1 0 1
1 0 1

输出b直接最后一句加上b就行了,b后面不加分号
或者disp(b)

追问

b矩阵的第二行如果按我说的应该是1 1 0啊。不是1 0 1。如果a在该行中出现那个数字,则b在那个数字对应的同行的那一列0改1

追答

弄错了,我以为你的意思是a(i,j)不为0,则b(i,j)改为1呢。

b=zeros(n,m);
for jj=1:n
for ii=1:m
if a(jj,ii)~=0
b(jj,a(jj,ii))=1;
end
end
end

b =

1 1 1
1 1 0
1 0 1

本回答被提问者采纳