2016-06-14 52 views
0

我有包含幾個不同的值,其中它們都是0和1之間在向量元素的動態減少

我也有兩個不同的值,所謂的min和max,表示的最小值和一個矢量最大值;這兩個值可能會隨時間而改變。

我會動態地減少向量的維數,這些值必須包含在由min和max描述的間隙內。

例如, 在時間t = 1 I具有矢量:

a=[0.5,0.2,0.6,0.3,0.2187,0.8798,0.5432,0.3563,0.3981,0.7845]; 
min=0.3; 
max=0.7; 

給定矢量a和兩個值(最小值和最大值),則新的向量:a_new進行,

應是:

a_new=[0.5,0.6,0.3,0.5432,0.3563,0.3981]; 

這歸因於事實,即minmax值決定哪個是綁定,使得一個新的載體,從原來的開始是定義。

回答

3

代碼解決方案

如果你只是想給老一生成一個新的載體,使用以下語法:

a_new = a(a>=min & a<=max); 

如果你也想計算的每個刪除的位置和非刪除的值,使用MATLAB的查找功能:

nonDeleteIndices = find(a>=min & a<=max); 
deletedIndices= find(a<min | a>max); 

結果

a_new = 

0.5000 0.6000 0.3000 0.5432 0.3563 0.3981 


nonDeletedIndices= 

1  3  4  7  8  9 


deletedIndices= 

2  5  6  10 

建議

我建議使用除了最小和最大其他不同的變量名稱 - 諸如MINVAL和MAXVAL。已經有這些名稱的MATLAB函數,你不想覆蓋它們。

+0

謝謝你的回答,我會知道是否有可能知道向量中有關刪除元素的位置。有可能的? – Chask

+0

@Chask是的,這是可能的,我相應地修改了我的答案。 – drorco

+0

謝謝,只是最後一個問題,我需要的輸出中的索引是例如與我的第一個問題相關的已刪除元素的索引: indices = [2 5 6 10] – Chask