如何才能让数组元素的值随位置而变化?
想实现的功能是,A=[1 2 3 4 5 6 7 8 9 10 ...]当去掉 5和8 后,6 7的位置自动往前移了一位,同时希望它们的值相应的减小1
9 10 ...的位置向前移了两位,同时值也减小2
大体想实现这样的想法
如果一个个扫描判断过去,我受不了
该怎样实现呢?大家有啥想法?
谢谢! a=; b=; =ismember(b,a); ii=sort(ii);
if sum(cc)~=length(b), error('sth is error !'); end
for j=1:length(ii)-1, pp=ii(j)+1:ii(j+1); a(pp)=a(pp)-j; end
if ii(end)~=length(a), j=j+1; pp=ii(j)+1:length(a); a(pp)=a(pp)-j; end
a(ii)=[]; a
回复 沙发 ChaChing 的帖子
谢谢,我慢慢消化先回复 沙发 ChaChing 的帖子
看明白了,但如果先删掉不要的元素,并且是个二维数组的情况呢比如 a=[1 2 6 0
2 1 3 0
3 2 4 8
4 3 0 0
6 1 7 0
7 6 8 12
...]
这里 5 已经被删掉了,怎样使所有位置的6 7 8 ...都相应的变成5 6 7 ...呢?
先用上面的方法试一下,可我还是想有没有更方便的方法呢
[ 本帖最后由 sun1993 于 2009-9-27 22:51 编辑 ]
回复 地板 sun1993 的帖子
不太明白LZ的问题!?回复 5楼 ChaChing 的帖子
我先把不要的元素,比如5,用其它方法都删掉了,剩下的所有位置的6怎么变成5,7变成6
也就是说,一个位置上的6变成了5,怎么做到同时其它位置上的6也变成5 不确定是否LZ要的!?
还有有点好奇LZ的原始工程目的!?
a=;
a(find(a==6))=nan; ii=find(a>6); a(ii)=a(ii)-1
[ 本帖最后由 ChaChing 于 2009-9-28 00:43 编辑 ] 想到了一个方法,谢谢ChaChing提示,
可能要写很多行,SIGH,我总想一行搞定
回复 沙发 ChaChing 的帖子
ChaChing的程序好强大,学习了一下,像sort以前都没用过。。。个人觉得第三行的: pp=ii(j)+1:ii(j+1);是不是改成:pp=ii(j)+1:ii(j+1)-1;比较好?不过结果是一样的,呵呵
回复 9楼 heizaoniangao 的帖子
个人并非高手, 刚好以前用过而已!没错pp=ii(j)+1:ii(j+1);改成pp=ii(j)+1:ii(j+1)-1;比较好
页:
[1]