matlab中如何將已知陣列中元素隨機排列

2021-03-04 00:47:16 字數 4243 閱讀 1445

1樓:匿名使用者

可以用這個語句進行隨機排列 x=x(randperm(numel(x)))

例如x=[1 2 3 4 7 9]

x=x(randperm(numel(x)))得到x=[9 1 4 3 2 7]

2樓:兔子和小強

給定陣列a,如下**可將其打亂:

a = a(randperm(numel(a)));

3樓:

最裡面的那個括號裡也要大寫x

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

4樓:四捨**入

可以參考下面的**:

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

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

randperm(4)

ans=

3 2 1 4

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

5樓:

使用函式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、使用的方法:

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

6樓:

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

randperm(n)產生長度

為n的隨機數列 如:

randperm(4)

ans=

3 2 1 4

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

7樓:匿名使用者

同意2樓的觀點

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

在matlab中,如何實現將乙個矩陣按行或列進行隨機的重新排序?

8樓:匿名使用者

假設行數或列數為n

vector = randperm(n);

vector是從1到n的整數隨機排列的向量按照vector裡各個元素的值重

新排列行列向量就可以了

假設待排列矩陣為m,排列後的矩陣為a

按列隨機排列

a = zeros(size(m));

for i=1:n

a(:,i)=m(:,vector(i));end

matlab 從陣列中隨機取幾個下標不同的元素

9樓:匿名使用者

原陣列a,假設是一維的。取n個元素。

rand=randperm(length(a));

index=rand(1:n);

index=sort(index);

b=a(index);

b就是你要的。如果不要求下標按順序排列,將第三行(index=sort(index);)去掉。

10樓:天雲一號

在matlab中,可以用rand函式來取隨機值,由於下標為整數,所以用randi函式取正整數隨機值。其具體實現過程為:

% a為陣列

% n為隨機取值的個數

% out為取出的元素陣列

function out = fun(a, n)[row, col] = size(a);

if(n > row*col)

error("n超出陣列元素個數");

return;

endx0 = 1 : row;  % 下標陣列y0 = 1 : col;  % 下標陣列for i = 1 : n

x = randi(row,1);  % 隨機取下標值y = randi(col,1);  % 隨機取下標值% 如果隨機取的下標在下標陣列中,那麼沒重複,將其對應元素取出if(sum(repmat(x,1,row)==x0)>0 || sum(repmat(x,1,row)==x0)>0)

out(i) = a[x, y];

endx0(x) = ; % 刪除剛才取出元素所對應的下標y0(y) = ; % 刪除剛才取出元素所對應的下標end

11樓:稅鶯韻楚好

如果這n個二維陣列維數相等,那就簡單,做乙個陣列的陣列alls把這n個資料都做成陣列,當成行放進去,取的時候計算一下行就行了,但是必須sn都是同維數矩陣.s1=

[1,2;3,4];

alls

=[s1];

s2=[5,6;7,8];

alls

=[alls;

s2];s3=

[9,10;11,12];

alls

=[alls;

s3];

取s2,這樣,先根據2計算行下標,

(2-1)*size(s2,1)+1:2*size(s2,1)列全取就是:

alls((2-1)*size(s2,1)+1:2*size(s2,1),

:);**********====

同理,去sn就是

alls((n-1)*size(sn,1)+1:n*size(sn,1),:);

matlab 如何從已知陣列中隨機提取幾列

12樓:匿名使用者

m=size(a,2);

col=ceil(rand(1,n)*m);

b=a(:,col);

其中col為需要隨機選取的列數

給定a得到b

想要對隨機列進行排序和避免重複清加上**

13樓:匿名使用者

比如陣列a為1行5列,則提取第2列的方法為:b=a(:,2); 取其他列是類似的方法

matlab把乙個陣列的部分隨機打亂

14樓:真

用randperm隨機打亂

a=1:200

p1=randperm(200);

b=a(p1(1:50));

a(p1(1:50))=b(randperm(50))

matlab怎樣從陣列矩陣中隨機取數?

15樓:匿名使用者

try function 'randperm', for example:

a=[1 2 3 4 5 6 7 8 9 10];

b=a(randperm(length(a)));

x=b(1:5);

matlab怎樣從陣列矩陣中隨機取數

16樓:匿名使用者

假設矩陣

抄是m*n維的矩陣,隨機生成乙個矩陣s。在s中任取k個數,將這k個數放入一維陣列target中。matlab**如下:

clcclear

m = input('陣列行數m:');

n = input('陣列列數n:');

k= input('將要取出的數個數k:');

if (k >m*n)

disp('矩陣元素個數小於需要取出的數個數!');

else

s = rand(m,n);

n= numel(s);%陣列長度

i=ceil(rand(1,k)*n);

target = s(i);

end執行結果如下所示。

17樓:茂甜利谷之

tryfunction'randperm',forexample:

a=[12345678910];

b=a(randperm(length(a)));

x=b(1:5);

matlab打亂資料,matlab中如何將某一陣列中資料進行打亂,有沒有相應的函式,謝謝,線上等。

a rand 1,20 隨即生成長度為100的陣列 randindex randperm length a 隨即打亂陣列索引 a a randindex 用新的索引構造打亂後的陣列 求大神matlab中如何打亂二維陣列中已有的排序 其實就是打亂行的順序,很簡單 a 0 0 0 10 2 0 31 0...

如何將Excel中資料匯入matlab變數中

x xlsread a.xlsx 讀進來後,x是乙個cell矩陣 如何將excel中的資料匯入到資料庫 如何將excel的資料匯入spss中 excel匯入spss步驟1 啟動spss,會出現如下圖框。選取 更多檔案 excel匯入spss步驟2 在 檔案型別 出選擇 excel 格式,點相應文件,...

cad中如何將整體圖形拆開,CAD中如何將乙個整體圖形拆開

cad中移 形的方法 你好,可bai以用pe命令合併圖形,du有時合併不了先把圖zhi 形用x拆開先。你要dao是說的是塊的話就用版b,先給塊定個名權字,然後拾取乙個點,再點選擇要的對像點確定,選到的圖形就成了乙個整體了,還有你說用ro時不對,其實有很多種方法旋轉角度的,你輸入數值旋轉是反方向轉的,...