从向量中删除重复值并提示用户输入新值

时间:2013-02-25 09:43:40

标签: matlab

我的矢量编号有6个来自用户输入的元素。我想删除任何重复的值并用另一个输入替换它(不使用“unique”或类似的)。

我试过了:

myvec=zeros(1,6);
disp('Choose numbers from 1 to 55')
for i=1:6
    myvec(i)=input('');
    if (find(myvec(i)<1 | myvec(i)>55))
        disp('Enter new value')
        myvec(i)=input('');
    end
     if myvec(i+1)==myvec(i)
         myvec(i+1)==input('');
     end
end

问题是:

1)以下声明是否正确?

if myvec(i+1)==myvec(i)
         myvec(i+1)==input('');
       end

2)当它运行时它给出越界,因为向量长度为​​6并且我试图访问i + 1.我试图从2:7使用for循环但是然后它在myvec向量中添加零作为第一个元素。

谢谢!

1 个答案:

答案 0 :(得分:1)

如何使用while循环?

myvec = NaN(1,6);
ii = 0;
disp('Choose numbers from 1 to 55');
while any( isnan(myvec) )
    tmp = input('');
    if tmp > 1 && tmp < 55 
       % proper input. check for duplicate
       if ( ii == 0 ) || ( ii > 0 && all( myvec(1:ii) ~= tmp ) )
           ii = ii+1;
           myvec(ii) = tmp;
       end
    end
end

一句小话,it is best not to use i and j as variables in Matlab