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

学习 时间:2026-04-01 00:56:20 阅读:9416
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)=[]; endend出现如下错误:? Index exceeds matrix dimensions.为什么?

最佳回答

慈祥的夕阳

粗心的野狼

2026-04-01 00:56:20

因为循环时一遇到非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)) = []

最新回答共有2条回答

  • 有魅力的棉花糖
    回复
    2026-04-01 00:56:20

    因为循环时一遇到非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)) = []

上一篇 C语言 大数加法#include#includeint main(){ void plus(int a[],int b

下一篇 马桶水箱缓慢漏水