x=input('please enter an original value')
for z=1:length(x)
if(mod(x(z),2)~=0)
x(z)=[];
end
end
disp(['the final value is:',num2str(x)])
请问一下这个代码问题出在哪里呀,它显示我索引超出数组数目
你好,你输入的是一个数组吧?这样的话,就比方你输入x=[1,2]
那么for z = 1:length(x)意思就是for z = 1:2
当z=1时,由于mod(1,2)不等于0,所以x(1)被删除了,所以最后只剩下x=[2],这个时候z=2,x只有一个元素,那么z(2)自然超出了你的索引下标啊!
正确的用法是
x=input('please enter an original value');
i = 1;
while (i<=length(x))
if(mod(x(i),2)~=0)
i
x(i) = [];
else
i = i+1;
end
end
disp(['the final value is:',num2str(x)])
或者更简单:
x=input('please enter an original value');
x(mod(x,2)~=0) = [];
disp(['the final value is:',num2str(x)])