我的矢量编号有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向量中添加零作为第一个元素。
谢谢!
答案 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