在matlab,對數列排序後,怎樣得到原數列的各個元素在排序後的數列的位置

2021-04-13 01:50:05 字數 5895 閱讀 3751

1樓:匿名使用者

在matlab中常用sort函式對數列進行排序[b,i] = sort(a)

這樣得到的b序列就是a序列中元素從小到大排列的序版列而sort函式不單隻能返回權一個序列b,還能返回第二個引數i這裡i就是排序後數列各元素在原序列中的位置,也就是b=a(i);

這時候只要再對i排序一次

[c,ii]=sort(i)

得到的ii就是原數列的各個元素在排序後的數列的位置,也就是a=b(ii);

2樓:匿名使用者

假如你要排序的陣列是 a,那麼:

[b,i] = sort(a)

返回的 b 是排序後的陣列,i 是對應元素原來在專 a 中的位置。

比如:a = [79, 39, 25, 41, 10];

[b, i] = sort(a)

% >>>

% b =

%     10    25    39    41    79% i =

%      5     3     2     4     1觀察 i,第一屬個元素是 5。這就表示,原來的第 5 個元素,排序後在第 1 的位置。

這個元素的值是 10,即是 b(1)。如果你只關心 i 對排序後的陣列不感興趣,也可寫成:

[~,i] = sort(a)

這樣就只返回 i,不返回 b 了。

3樓:匿名使用者

用sort函式排序的話,[sx,index] = sort(x) ,排序後,sx是排序好的向量,index是 向量sx中對x 的索引。

4樓:匿名使用者

如果你用的是sortrows函式,那麼可以這樣寫:[y,i]=sortrows(a);

其中y是排序後的數列,i是排序後元素在原來的數列中的位置。

用matlab怎麼在數列中找到需要的值並返回在數列中的位置

5樓:匿名使用者

matlab find函式用於返回所需要元素的所在位置 (位置的判定:在矩陣中,第一列開始,自版

上而下,依權

次為1,2,3...,然後再從第二列,第三列依次往後數)find(a)返回矩陣a中非零元素所在位置>> a = [1 0 4 -3 0 0 0 8 6];

>> x = find(a)

x =1 3 4 8 9find(a>5)返回矩陣a中大於5的元素所在位置>> find(a>5)

ans =

8 9

[i,j,v]=find(a) 返回矩陣a中非零元素所在的行i,列j,和元素的值v(按所在位置先後順序輸出)

>> a=[3 2 0; -5 0 7; 0 0 1];

>> [i,j,v]=find(a)

i =121

23j =112

33v =3-52

71find(a>m,4)返回矩陣a中前四個數值大於m的元素所在位置也是自己理解,如有不正之處,還望指正!希望我可以幫上點小忙!

6樓:發夢發牛豆

用for語句再用if判斷就可以了,最後放回 i

有一列資料,請程式設計按升序排序;然後輸入一個數後,按原來排序的規律將它插入到數列中; 10

7樓:醉隱山人

#include

void main()

;int m,n;

printf("請輸入m的值:\n");

scanf("%d",&m);

n=zhe_ban(a,m);

if(n==0)

printf("無數

次\n");

else

printf("該數是第%d個\n",n+1);

printf("\n如果滿意請記得給分\n");

}int zhe_ban(int a[15],int n){int s=0,b=14,t=0,mid; mid = ( s+b )/2; while(a[mid]!=n) { if(n>a[mid]) mid=(mid+b)/2; if(n你

matlab中,怎樣把一組給定的資料隨機排列?

8樓:四舍**入

可以參考下面的**:

x=x(randperm(numel(x)))numel(x)獲得變數長度

randperm(n)產生長度為n的隨機數列 如:

randperm(4)

ans=

3 2 1 4

x(...) 取得x中相應元素產生新數列

9樓:

使用函式randperm()即可實現。

例:a = [7,6,3,9,10];      % 試驗矩陣【用於試驗,矩陣元素為待隨機排列的資料】

randindex_a = randperm(5);  % 生成1到5這幾個數的隨機排列

b = a(randindex_a);       % 隨機排列後的矩陣

每一行**執行結果:

>>a = [7,6,3,9,10]

a = 7 6 3 9 10

>>randindex_a = randperm(5)randindex_a =1 4 5 3 2>> b = a(randindex_a)b =7 9 10 3 6

擴充套件資料函式randperm()

1、語法格式:r = randperm(n)2、函式功能:將數字1:n進行隨機排列,排列結果儲存在行向量內3、例:輸入 randperm(3)

輸出 3 1 2

4、使用的方法:

利用索引值的隨機排列,生成所有元素的隨機排列

10樓:

x=x(randperm(numel(x)))numel(x)獲得變數長度

randperm(n)產生長度

為n的隨機數列 如:

randperm(4)

ans=

3 2 1 4

x(...) 取得x中相應元素產生新數列

11樓:匿名使用者

同意2樓的觀點

就是這樣,當然你也可以使用rand等生成其他隨機數

請問matlab中怎麼把一維陣列逆序排列,如將a=[1,2,3,4,5],轉成b=[5,4,3,2,1]。有沒有一個現成的函式實現呀

12樓:四舍**入

用:b=fliplr(a);

fliplr左右翻轉矩陣

語法:b=fliplr(a)

將矩陣a的列繞垂直軸進行左右翻轉matabc如果a是一個行向量,fliplr(a)將a中元素的順序進專行翻轉。

如果a是一個列向量,fliplr(a)還等於a。

13樓:凌亂心扉

用:baib=fliplr(a);

fliplr左右翻轉矩陣

語法:du

b=fliplr(a)

將矩陣a的列繞垂

zhi直軸進行dao左右翻轉matabc

如果a是一專個行向量,fliplr(a)將a中元屬素的順序進行翻轉。

如果a是一個列向量,fliplr(a)還等於a。

舉例說明:

例一:如果a是一個行向量

a=[1 3 5 7 9]

fliplr(a)

ans=[9 7 5 3 1]

例二:如果a是一個列向量

a=[135

79]fliplr(a)

ans=[135

79]【功能簡介】實現矩陣左右翻轉。

【語法格式】

b=fliplr(a)

對矩陣a進行左右翻轉。

【例項3.47】對矩陣magic(3)進行左右翻轉。

>> a=magic(3)

a =8     1     6

3     5     7

4     9     2

>> b=fliplr(a)    %左右翻轉b =

6     1     8

7     5     3

2     9     4

【例項分析】左右翻轉的過程中,如果矩陣有奇數列,那麼中間一列是沒有變化的。

14樓:戶衣

matlab中把一維數

bai組逆序排列,可以通du過fliplr函式zhi來進行操作。

daofliplr,是指

專對矩陣屬

操作的函式,可以實現矩陣翻轉。

將一維陣列逆序排列步驟(如a=[1,2,3,4,5]轉成b=[5,4,3,2,1]):

1、雙擊開啟matlab應用程式。

2、在matlab介面中的「命令列視窗」中輸入命令。

3、根據紅色區域位置,在「命令列視窗」輸入「a=[1,2,3,4,5]」。

4、通過函式fliplr求矩陣逆序排列,在「命令列視窗」輸入「b=fliplr(a)」,按下回車鍵。可求得矩陣逆序排列b=[5,4,3,2,1]。

15樓:匿名使用者

fliplr(a);

你可以在matlab中輸入help fliplr具體看一看!

16樓:

沒有bai這種函式吧,自己編一du個函式,加zhi入庫不就可以了這個dao很簡單啊

function (b)=paixu(a);j=1;

n=length(a);

for j=1:n

b(n-j+1)=a(j);

end沒仔細弄你在內改改,應該可以容的

17樓:匿名使用者

b=a(end:-1:1)

18樓:匿名使用者

sort(a,'descend')

matlab中,怎麼找出一組資料中靠近某個值的所有點,並輸出位置 5

19樓:59分粑粑

實現的方法和詳細的操作步驟如下:

1、第一步,需要知道matlab陣列找到所有接近某個值的點的座標是使用「find」函式,可以在命令列視窗中輸入「help find」,如下圖所示,然後進入下一步。

2、其次,完成上述步驟後,輸入「a =[1 4 5;6 7 8;7 9 12]」,在matlab命令列視窗中建立副本陣列,如下圖所示,然後進入下一步。

3、接著,完成上述步驟後,輸入「[m,n]  =find(a == 9)」並找到等於9的陣列的座標,如下圖所示,然後進入下一步。

4、然後,完成上述步驟後,按enter鍵確認,可以看到陣列中有一個座標等於9,即第三行和第二列,如下圖所示,然後進入下一步。

5、最後,完成上述步驟後,如果有多個具有相同的值,將返回相應的多個座標位置,如下圖所示。這樣,問題就解決了。

20樓:智慧小白菜

1、首先需要知道matlab陣列找靠近某個值的所有點座標,是使用find函式,可以在命令列視窗中輸入help find。

2、在matlab命令列視窗中輸入a=[1 4 5;6 7 8;7 9 12],建立a陣列。

3、輸入[m,n]=find(a==9),找到a陣列等於9的座標。

4、按回車鍵之後,可以看到a陣列等於9的座標有一個,是第3行第2列。

5、如果等於的值有多個,會返回多個座標位置。

21樓:匿名使用者

a=[1, 3,4

4,5,3];

b=find(a>2&a<5);

b =235

6b代表所需資料的下標,a的元素自上而下自左向右排列

22樓:匿名使用者

假設你的資料存在一個矩陣h中[~, i]=min(abs(h(:)-0.0054))i是最接近0.0054的列索引位置。最近的值為y=h(i)

怎樣用matlab提取子數列下標怎麼解決

clear all clc a 1 121 for i 1 3 length a b i a i endid find b b b id a ones 1,121 for j 1 1 40 b j a 3j 2 end for i 1 41 b i a 3 i 2 end matlab 提取矩陣下標...

怎麼在excel上對資料排名次,怎樣在Excel中用函式給成績排名次?

如果資料在a1 a20,需要進行排名,那麼在b1 b20輸入以下公式,按ctrl enter組合鍵結束 rank a1,a 1 a 20 使用rank函式 不會使用可參考函式幫助,或者在此上傳資料 2007為例,選中要排序的專案,點開始,右邊的排序和篩選。怎樣在excel中用函式給成績排名次?1 開...

怎樣在matlab中輸出雷克子波

雷克子波及其振幅譜的matlab輸出 fm 50 主頻 dt 0.001 時間域取樣間隔 number 100 取樣點數 t number 2 1 number 2 a 1 2 pi fm t 0.001 2 exp pi fm t 0.001 2 subplot 2,1,1 plot t,a ti...