
matlab 怎么修改下面的程序 a=[1 1 2;1 2 3]; for i=1:2 b(:,i)=find(a==i); end
4个回答
展开全部
你i=1时find(a==i) 有1 2 3,你i=2时find(a==i) 有4 5 两者不能同时放在b中,数组维数不同;如果你一定要放在一个变量里面,可以这样
b=zeros(6);
for i=1:2
t=find(a==i)
if length(t)>0
for j=1:length(t)
b(j,i)=t(j)
end
end
end
结果:
b =
1 4 0 0 0 0
2 5 0 0 0 0
3 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
b=zeros(6);
for i=1:2
t=find(a==i)
if length(t)>0
for j=1:length(t)
b(j,i)=t(j)
end
end
end
结果:
b =
1 4 0 0 0 0
2 5 0 0 0 0
3 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
追问
这个问题我解决了,谢谢了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请问你的编程意图是什么啊?b(:,i)=find(a==i); find找到的是满足条件的坐标值啊,你i=1的时候生成了三个坐标值1 2 3,b的第一列就有三个值1 2 3,然后i=2的时候只有两个坐标值啊!在运行第一次循环的时候你就默认让b是三行了,你现在要把两个值赋给一个三维的列向量,你说错不错!
你把那个3改成2试试,保证对!
你把那个3改成2试试,保证对!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想实现什么功能呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想要的是什么结果?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询