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