matlab 向量中選擇元素插入該向量的位置

2021-07-14 12:08:20 字數 738 閱讀 9312

問題:在進行啟發式演算法操作中,經常使用的是插入操作。隨機生成乙個向量,生成乙個需要插入的元素,另外生成乙個需要插入的位置,進行插入操作。比如,向量c=[6 2 4 5 3 9 8 7 1], 需要插入的元素為c(5)=3,位置a=2。插入操作後的c=[6 32 4 5 9 8 7 1]. 變化的其實就是兩個點之間的元素位置。

具體實現**為:

clcclear all

n=9c=randperm(n)

i=randi(n) %需插入元素

a=randi(n) %插入位置

d=c;           %中間向量,暫時儲存c向量

c(1,a)=c(1,i);  %位置i的元素插到位置a

if i>a

c(1,a+1:i)=d(1,a:i-1);  %位置a-(i-1)的元素向右平移乙個位置到位置(a+1)-i.

elseif ic(1,i:a-1)=d(1,i+1:a);   %位置(i+1)-a的元素向左平移乙個位置到位置 i-(a-1).

endc

執行結果:

c =6     2     4    5     3     9    8     7     1

i =a =

c =6     3     2    4     5     9    8     7     1

特別注意:1)要區分待插入元素的位置和插入位置的大小,操作不一樣。2)用d這個中間向量儲存c,因為位置i的元素插到位置a之後,c(a)的值變了。

html中 選擇子元素 子元素選擇器

p first child 選擇第乙個子元素 p是body的子元素 但是當第乙個不是p則什麼都選不到 這個的意思是不僅要是第乙個還要同時是p元素 p last child last是指所有的父元素中最後乙個子元素 這裡前面標籤為p所以最後的子元素也得同時是p不然沒用 p nth child 2 這個...

matlab求向量a中不包含向量b元素的集合

我們在學習和使用matlab時,如要實現某一功能,一定要先查查matlab系統本身有沒有實現這一功能的函式,如有的話,可能一條語句就解決問題。如以下兩組向量 a 1 2 3 4 5 6 7 8 9 10 b 3 5 6 求向量a中不包含向量b中元素的集合,如不使用matlab系統功能函式,可能需通過...

matlab查詢兩個向量中不同的元素

設有向量a和b,要求出a和b中的不同元素,可使用matlab自帶的setdiff函式。語法為 c setdiff a,b 其計算公式為c a b。需要注意的是此函式只能求出向量a中與b不同的元素,b中與a不同的元素則要通過setdiff b,a 求出。例如 設a 9 71 b 024 65 執行c ...