matlab 怎么修改下面的程序 a=[1 1 2;1 2 3]; for i=1:2 b(:,i)=find(a==i); end

 我来答
lingongchun
2011-11-08 · TA获得超过602个赞
知道答主
回答量:98
采纳率:0%
帮助的人:62.1万
展开全部
你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
追问
这个问题我解决了,谢谢了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
麻瓜ll
2011-11-08 · 超过15用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:40.5万
展开全部
请问你的编程意图是什么啊?b(:,i)=find(a==i); find找到的是满足条件的坐标值啊,你i=1的时候生成了三个坐标值1 2 3,b的第一列就有三个值1 2 3,然后i=2的时候只有两个坐标值啊!在运行第一次循环的时候你就默认让b是三行了,你现在要把两个值赋给一个三维的列向量,你说错不错!
你把那个3改成2试试,保证对!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jofficer
2011-11-08 · TA获得超过959个赞
知道小有建树答主
回答量:556
采纳率:100%
帮助的人:523万
展开全部
你想实现什么功能呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周永红_ZYH
2011-11-08 · TA获得超过2912个赞
知道大有可为答主
回答量:1455
采纳率:90%
帮助的人:740万
展开全部
你想要的是什么结果?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式