matlab儲存x,y座標的兩列矩陣,怎麼對矩陣先按照x座標排序,然後對x相同的按照y座標排序

2021-03-27 11:16:29 字數 3132 閱讀 5312

1樓:上善若水

function [ sortedmat ] = twophasesort(  mat, n1, n2 )

sortedmat = zeros(size(mat));

partialsortedmat = sortrows(mat,n1);

n1value = (tabulate(partialsortedmat(:,n1)));

startrows = 0;

for i = 1:size(n1value,1)

sortedmat((startrows+1):(startrows+n1value(i,2)) , :) = sortrows(partialsortedmat((startrows+1):

(startrows+n1value(i,2)) , :),n2);

startrows = sum(n1value(1:i,2));

endend

上面是乙個函式檔案中的全部內容,輸入二維陣列mat和指定的列n1、n2。首先對mat的第n1列進行公升序排序,再對n2列進行公升序排序。輸入引數有三個:

mat:等待排序的二維陣列。陣列只要是二維即可,大小不限定。

n1:待排序的第一列。要求是不大於mat列數的正整數。

n2:待排序的第二列。要求是不大於mat列數的正整數。

返回值是經過排序的、大小與mat相同的陣列。

題主這裡只需要新建乙個函式檔案,把裡面的內容清空,再把上面的**全部貼上進去,然後儲存。儲存之後,按照如下格式呼叫函式即可:

sorted = twophasesort(a, 1, 2);

_____________________________

如果想要獲取排序後的索引,可以使用下面的twophasesortpro。

function [ sortedmat,index ] = twophasesortpro(  mat, n1, n2 )

index = [1:size(mat,1)]';

matindex = [mat index];

sortedmatindex = twophasesort(  matindex, n1, n2 );

sortedmat = sortedmatindex(:,1:(end - 1));

index = sortedmatindex(:,end);

end由於在twophasesortpro中呼叫了twophasesort,所以要把兩個函式都儲存起來,也就是說,twophasesortpro.m和twophasesort.m要同時存在。

使用方法:

輸入引數有三個,和twophasesort相同。

輸出引數有兩個,第乙個是經過兩次排序的陣列,第二個是索引(列向量)。

使用示範:

[sorted, index] = twophasesortpro(a, 1, 2);

2樓:匿名使用者

其實直接用load函式更方便

a=load('data.txt') %n*2矩陣直接讀取並儲存在a中

然後可以用迴圈

for: i=1:numel(a(:,1))ai=a(i,1);

bi=a(i,2);

fscanf 最低端, 乙個乙個字元讀都可以textread 是按行或者矩陣(每行格式相同)讀取load 最高端, 也限制最大, 讀取整塊同資料型別的矩陣

3樓:匿名使用者

>> a

a =1 2

4 5

3 6

1 3

>> x = a( :, 1 );

>> y = a( :, 2 );

>> [ x, index ] = sort( x );%對x排序,並記下排序索引

>> a = [ x, y( index ) ]a =1 2

1 3

3 6

4 5

matlab中如何把乙個兩列的資料賦值給矩陣並將兩列分別賦值x和y

4樓:匿名使用者

1、使用=號進行賦值,會將等號右邊的值付給左面,比如x=13則x就是13了。

2、可以對變數進行進一步賦值,也可以包含以前的變數,比如y=x+13。

3、以上是一維賦值,也可以賦值多維矩陣比如a=[0 1 2 3]其中可以用:來表示,如a=[0:100],表示0到100之間的數賦值給矩陣a。

4、在左下角的工作區workspace中可以看到所有的變數,也可以使用who命令來檢視所有變數。

5、使用命令clear 變數,比如clear a,會將變數a從記憶體中清除。

6、對於矩陣賦值,比如b=[1 2 3;4 5 6;],這結果如下,顯然,使用分號進行換行。就完成了。

5樓:匿名使用者

其實直接用load函式更方便

a=load('data.txt') %n*2矩陣直接讀取並儲存在a中

然後可以用迴圈

for: i=1:numel(a(:,1))ai=a(i,1);

bi=a(i,2);end

6樓:楊好巨蟹座

如果只是為了得到a矩陣第一列與第二列相加的結果,可以很方便的實現:

a=[1 2;3 4];

z=a(:,1)+a(:,2);

如果,一定要按照意思,先把x,y定義為符號變數,再賦值計算,syms x y也起不到做作用,matlab不需要定義。

a=[1 2;3 4];

x=a(:,1);

y=a(:,2);

z=x+y;

如果要一次次的計算,所知道是利用for迴圈。

a=[1 2;3 4];

for k=1:2

x=a(k,1);

y=a(k,2);

z(k)=x+y;end

7樓:

比如a=[1,2;

3,4;

5,6];

a=a(:,1)

b=a(:,2)

8樓:匿名使用者

a=load('data.txt');

ai=a(:,1);

bi=a(:,2);

matlab中X,Y是什麼意思,matlab中是什麼意思

就是把x y矩陣合起來形成乙個新的矩陣。將copyy的轉置矩陣賦給x 比如說 y magic 5 y 17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9 x y x 17 23 4 10 1124 5 6 12 181 7 13...

cad圖中的xy座標是不是和施工放線xy座標相反的啊

在工程測量中使用的是高斯投影平面直角座標系,橫軸是y座標軸,豎軸是x座標軸。全站儀裡顯示的xyz座標是北東高nez,東西橫向為y座標,南北縱向為x座標。所以cad圖中的xy座標是不是和施工放線xy座標是相反的。cad圖中的xy座標是和施工放線xy座標相反的,因為工程測量中使用的是高斯投影平面直角座標...

大地座標和經緯度如何換算,XY座標如何轉換為經緯度座標

大地座標是將地球看做是乙個標準橢球體,選取了乙個面作為基準面,然後在這個基礎上來劃分各個座標的。大地座標也是經緯度的,所以這個不存在換算,如果換算的話,應該是各個座標系進行換算。具體的你去搜一下測量的一些東西。最基本的測繪書上都有大地座標和經緯度的換算公式。不過還是應該到測繪部門得到準確的轉換關係。...