matlab判断语句

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)])