首页 文章

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

提问于
浏览
0

我有来自用户输入的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 回答

  • 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 .

相关问题