作业帮 > 综合 > 作业

Matlab中 求的是矩阵d中删除不等于2的列

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 09:56:14
Matlab中 求的是矩阵d中删除不等于2的列
d=[2 3 4 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 5 2 2 2 7 3 2 2 2 2 2 2 2 2 2 9 1 2 2 2 2 3 4 2 2 2 2 2 2 2];
for m=1:length(d)
if d(m)~=2
d(m)=[];
end
end
出现如下错误:? Index exceeds matrix dimensions.
为什么?
因为循环时一遇到非2的元素就删除了,结果d变短了,而循环的长度还按原来的长度进行索引,所以超出了矩阵长度.
d(find(d~=2)) = []
或者,找出有2的元素个数,直接新建相等长度元素都为2的矩阵.
d = 2*ones(1,length(find(d=2)))
再问: a=[80 82 85 70 72 70 66 50 55 25 ]; c=[220 208 198 192 180 180 165 162 160 158 ]; d=d=[2 3 4 2 2 1 1 2 2 2 2]; for m=1:10 if d(m)~=2 d(m)=[]; a(m)=[]; b(m)=[]; end end 每个矩阵都是十个元素,以矩阵d为约束条件(除去以d中非2的元素为下标的a与b) 出现错误为:??? Index exceeds matrix dimensions. 请问一下,这是为什么?
再答: 原因还是上面说的,循环运行了几次d矩阵长度就不是10了,所以索引出错了。 a=[80 82 85 70 72 70 66 50 55 25 ]; c=[220 208 198 192 180 180 165 162 160 158 ]; d=[2 3 4 2 2 1 1 2 2 2 2]; a(find(d~=2)) = [] c(find(d~=2)) = []