国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MATLAB中的矩陣的重構(gòu)和重新排列

這篇具有很好參考價值的文章主要介紹了MATLAB中的矩陣的重構(gòu)和重新排列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

師從清風(fēng)

矩陣的重構(gòu)和重新排列

reshape函數(shù)


reshape函數(shù)可以改變矩陣的形狀,其常用語法為reshape(A,m,n)或者reshape(A,[m,n]),這可以將矩陣A的形狀更改為m行n列,前提是轉(zhuǎn)化前后的兩個矩陣的元素總數(shù)要相同。例如有一個矩陣A,它原來的大小是2行6列,我們需要將其形狀變成3行4列,那么,我們可以使用命令:reshape(A, 3, 4). ?(A和B中的元素個數(shù)是相同的)
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
從上面的運(yùn)行結(jié)果可以看出,reshape函數(shù)實際上是按矩陣的線性索引來重新組織矩陣元素的。也就是說,它先取矩陣A的第一列,然后是第二列,依此類推,再按新的維度重新組織這些元素。因此,轉(zhuǎn)換后的B矩陣中的元素和A矩陣中的元素是完全相同的,即A(:)和B(:)的結(jié)果完全相同。

若A是一個由12個元素組成的矩陣,命令reshape(A,3,[ ])、reshape(A,[ ],4)可以實reshape(A,3,4)一樣的效果。
如果你給出的轉(zhuǎn)換后的行數(shù)和列數(shù)的乘積不等于原始矩陣中元素的個數(shù),那么MATLAB就會報錯:
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab

sort函數(shù)


sort函數(shù)用來對向量或者矩陣進(jìn)行排序。如果是矩陣的話,可以對矩陣的每一行或每一列分別進(jìn)行排序。
第一:對向量v排序
sort(v) 可以將向量v按照從小到大的順序進(jìn)行升序排列
sort(v,'descend')可以將向量v按照從大到小的順序進(jìn)行降序排列
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
注意,上面的用法我們只使用了sort函數(shù)的一個返回值,即排序后的向量;
事實上,sort函數(shù)可以有兩個返回值,基本用法為:[sort_v , ind] = sort(v)
這里,sort_v是排序后的向量,ind是排序后的向量中的每個元素在v向量中的索引。
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
在上面的例子中,我們讓sort函數(shù)返回了兩個變量;sort_v和ind。它們是兩個長度相等的向量,向量的方向和sort函數(shù)中輸入的v向量的方向一致,都是行向量。向量v中所有元素的最小值為8,而8在v中的索引是4,因此sort_v中第一個元素為8,ind的第一個元素為4; 向量v中第二小的值為10,而10是v中的第1個元素,因此sort_v中第二個元素為10,ind的第二個元素為1;依次類推,可以得到sort_v和ind向量的值。事實上,這里有一個恒等關(guān)系成立:v(ind)運(yùn)行的結(jié)果和sort_v的結(jié)果全一樣,大家可以自行驗證。
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab

下面具體的應(yīng)用場景

假設(shè)清風(fēng)班上有10名同學(xué),序號分別是1號、2號一直到10號。已知這10名同學(xué)的成績構(gòu)成的向量為:[84 70 61 90 69 78 88 74 92 76],問:清風(fēng)班上哪三名同學(xué)的分?jǐn)?shù)最高,分?jǐn)?shù)分別是多少?
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
根據(jù)MATLAB返回的結(jié)果可以看出:9號、4號和7號這三名同學(xué)的分?jǐn)?shù)排名前三,分別是92、90和88分。

引申一個問題:我們能不能知道這10名同學(xué)在班上的排名?

MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
?

對矩陣A排序


使用方法:sort(A,dim)
dim = 1時,沿著行方向(從上至下)對矩陣的每一列按照從小到大的順序分別進(jìn)行排序
dim = 2時,沿著列方向(從左至右)對矩陣的每一行按照從小到大的順序分別進(jìn)行排序

MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
? ?注意:(1)當(dāng)dim=1時,sort(A,1)可以直接寫成sort(A);

(2)默認(rèn)是升序排列的,我們可以在最后面加一個輸入?yún)?shù)'descend',變成從大到小的降序排列;

MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab

(3)可以有兩個返回值,代表的含義和對向量排序類似,表示排序后的元素在原矩陣所在行或所在列中的索引。
MATLAB中的矩陣的重構(gòu)和重新排列,數(shù)學(xué)建模,matlab
sort(A,2) ?% dim = 2時,沿著列方向(從左至右)對矩陣的每一行按照從小到大的順序分別進(jìn)行排序
sort(A,'descend') ?% 更改為降序排列
[sort_A , ind] = sort(A)
但這時候的A(ind)就不等于sort_A啦

sortrows函數(shù)

sortrows函數(shù)可以基于矩陣的某一列對矩陣進(jìn)行排序。這個函數(shù)的用法較多,我們這里直接以一個具體的實例來講解它的用法。
假設(shè)清風(fēng)老師有6名學(xué)生,每一行代表一名學(xué)生。這六名同學(xué)的四門科目的成績對應(yīng)著四列,例如第一名同學(xué)的第一科成績?yōu)?5,第二科成績?yōu)?0,依次類推。
score = [95 ? ?80 ? ?85 ? ?79 ??
? ? ? ? ?95 ? ?67 ? ?78 ? ?90 ? ?
? ? ? ? ?95 ? ?67 ? ?78 ? ?75 ??
? ? ? ? ?95 ? ?67 ? ?64 ? ?73 ??
? ? ? ? ?86 ? ?85 ? ?82 ? ?84 ? ?
? ? ? ? ?86 ? ?87 ? ?84 ? ?88];
請解決下面的問題:
(1)請基于第一科的成績按升序?qū)@六名同學(xué)進(jìn)行排序。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,基于第二科成績升序排列。如果第二科成績還相同,就基于第三科成績進(jìn)行排序,依次類推。
sort_score1 = sortrows(score)
(2)請基于第一科的成績按升序?qū)@六名同學(xué)進(jìn)行排序。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,請保持其在矩陣中出現(xiàn)的先后順序。
sort_score2 = sortrows(score,1)
(3)請基于第二科的成績按升序?qū)@六名同學(xué)進(jìn)行排序。當(dāng)?shù)诙瞥煽兿嗤瑫r,請保持其在矩陣中出現(xiàn)的先后順序。
sort_score3 = sortrows(score,2)
(4)請基于第一科的成績按升序?qū)@六名同學(xué)進(jìn)行排序。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,基于第三科成績升序排列。如果第一科和第三科都相同,就保持在矩陣中出現(xiàn)的先后順序。
sort_score4 = sortrows(score,[1,3])
事實上,sortrows(score)等價于sortrows(score, 1:size(score,2)),即sortrows(score, [1,2,3,4])

(5)請基于第一科的成績對這六名同學(xué)進(jìn)行降序排列。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,基于第三科成績降序排列。如果第一科和第三科都相同,就保持在矩陣中出現(xiàn)的先后順序。
sort_score5 = sortrows(score,[1,3],'descend')
(6)請基于第一科的成績對這六名同學(xué)進(jìn)行降序排列。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,基于第三科成績升序排列。如果第一科和第三科都相同,就保持在矩陣中出現(xiàn)的先后順序。
sort_score6 = sortrows(score,[1,3],{'descend','ascend'})
(7)請基于第一科的成績按升序?qū)@六名同學(xué)進(jìn)行排序。當(dāng)?shù)谝豢瞥煽兿嗤瑫r,請保持其在矩陣中出現(xiàn)的先后順序,并返回索引值。
score
[sort_score7 , ind7] = sortrows(score,1)
注意:score(ind7,:)得到的結(jié)果和sort_score7的結(jié)果完全一樣。
score(ind7,:)

通過上面的例子可以看出,sortrows函數(shù)和sort函數(shù)的最大區(qū)別在于:
sort函數(shù)會對矩陣的每一列分別進(jìn)行排序;
sortrows函數(shù)是基于某一列進(jìn)行排序的,排序后得到的新矩陣的同一行元素不會改變。
score
sort(score)
sortrows(score)
在實際的應(yīng)用場景中,sort函數(shù)一般只用于對向量進(jìn)行排序;如果是矩陣或者表格排序,我們一般使用sortrows函數(shù),例如Excel中對表格的排序就和sortrows函數(shù)類似。在以后的章節(jié)中,我們會專門講到MATLAB中的表格數(shù)據(jù),到時候還會用的這個函數(shù)。

(4)flip / fliplr / flipud函數(shù)
這三個函數(shù)用于對矩陣進(jìn)行翻轉(zhuǎn)
flip:翻轉(zhuǎn)元素的順序; fliplr:將數(shù)組從左向右翻轉(zhuǎn) ;flipud:將數(shù)組從上向下翻轉(zhuǎn)
后面兩個函數(shù)是flip函數(shù)的特例。

用法1: flip(A)
如果 A 為向量,flip(A) 將沿向量的長度方向翻轉(zhuǎn)元素順序。
如果 A 為矩陣,flip(A) 將反轉(zhuǎn)每列元素的順序。
A = [5 2 7 8 9]; ?% 行向量
flip(A)
等價于 ?A(end:-1:1)
A(end:-1:1)
B = [5;2;7;8;9]; ?% 列向量
flip(B)
C = [5 8 7;
? ? ?4 2 6;?
? ? ?3 5 8;
? ? ?6 4 1];
flip(C)
用法2: flip(A,dim)
flip(A,dim) 沿維度 dim 翻轉(zhuǎn) A 中元素的順序。
如果 A 為矩陣,flip(A,1) 將沿著行方向?qū)仃嘇上下翻轉(zhuǎn),
? ? ? ? ? ? ? ? ? ? ? ? ? flip(A,2) 將沿著列方向?qū)仃嘇左右翻轉(zhuǎn)。
C = [5 8 7;
? ? ?4 2 6;?
? ? ?3 5 8;
? ? ?6 4 1];
flip(C,1) ? % 等價于flip(C) 或者 ?flipud(C)
flipud(C)
?flip(C,2) ? % ?fliplr(C)
?fliplr(C)

A = 1:5
flip(A)
flip(A,1)

(5)rot90函數(shù) ?
C = [5 8 7; 4 2 6; 3 5 8; 6 4 1]
rot90(C) ?% 逆時針方向旋轉(zhuǎn)90度
rot90(C,2) ?% 逆時針方向旋轉(zhuǎn)90*2=180度
rot90(C,3) ?% 逆時針方向旋轉(zhuǎn)90*3=270度

rot90(C,-1) ?% 逆時針旋轉(zhuǎn)-90度;等價于順時針旋轉(zhuǎn)90度

若有侵權(quán),請聯(lián)系作者文章來源地址http://www.zghlxwxcb.cn/news/detail-841283.html

到了這里,關(guān)于MATLAB中的矩陣的重構(gòu)和重新排列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • matlab相關(guān)(4)重復(fù)排列&矩陣列的拼接

    matlab相關(guān)(4)重復(fù)排列&矩陣列的拼接

    例子,比如兩次分別從數(shù)組[1 2 3 4 5]中取出一個數(shù)字出來 A=zeros(5,5); D=zeros(5,10); for i=0:4 ?A(:,i+1)=[(11:15)+10*i]\\\'; ?D(:,2*i+(1:2))=num2str(A(:,i+1))-\\\'0\\\'; end A D B=reshape(A,1,[ ]).\\\' B=reshape(A\\\',1,[]) ?

    2024年02月14日
    瀏覽(26)
  • 2023年數(shù)學(xué)建模:旅行商問題:數(shù)學(xué)建模與MATLAB實現(xiàn)

    目錄 引言 問題定義 解決策略 MATLAB實現(xiàn) 數(shù)學(xué)建模案例

    2024年02月11日
    瀏覽(39)
  • 數(shù)學(xué)建模------MATLAB學(xué)習(xí)使用

    數(shù)學(xué)建模------MATLAB學(xué)習(xí)使用

    多項式就是使用行向量分別表示前面的系數(shù),這個需要按照一定的順序,而且為0的系數(shù)不能夠省略,按照從高到低的順序進(jìn)行表示; 我們接下來演示一下如何求多項式的根: 我們首先來認(rèn)識一下求多項式的根的函數(shù)roots 接下來我們哪一個最高次為5的多項式舉例: 這個方程

    2024年03月27日
    瀏覽(33)
  • 數(shù)學(xué)建?!猰atlab基本使用

    數(shù)學(xué)建?!猰atlab基本使用

    清除工作區(qū):clear。 清屏:clc。 圓周率表示:pi。 lnx代碼化:log(x)。 e^x代碼化:exp(x) x代表次數(shù)。 sin(x):sin(x);cos(x):cos(x);tan(x):tan(x)? arcsin(x):asin(x);arccos(x):acos(x);arctan(x):atan(x). .*與*的區(qū)別:.*代表進(jìn)行矩陣的數(shù)值運(yùn)算 *代表進(jìn)行矩陣的運(yùn)算。(matlab的基本操作對象是矩陣)。

    2024年02月07日
    瀏覽(24)
  • Matlab數(shù)學(xué)建模實驗題

    Matlab數(shù)學(xué)建模實驗題

    (1)用起泡法對10個數(shù)由小到大排序.即將相鄰兩個數(shù)比較,將小的調(diào)到前頭。 (2)有一個4×5矩陣,編程求出其最大值及其所處的位置. (3)編程求 (4)一球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第10次落地時,共經(jīng)過多少米?第10次反彈有多高? (

    2024年02月11日
    瀏覽(21)
  • 數(shù)學(xué)建模-MATLAB三維作圖

    數(shù)學(xué)建模-MATLAB三維作圖

    導(dǎo)出圖片用無壓縮tif會更清晰 幫助文檔:doc 函數(shù)名 新建實時腳本或右鍵文件轉(zhuǎn)換為實時腳本 實時編輯器-全部運(yùn)行-內(nèi)嵌顯示 保存為PDF

    2024年02月15日
    瀏覽(19)
  • 數(shù)學(xué)建模之MATLAB使用

    數(shù)學(xué)建模之MATLAB使用

    我們都知道MATLAB里面存在著數(shù)值計算和符號計算,但是兩者之間到底是怎樣的呢? 舉一個很簡單的例子,我們在高等數(shù)學(xué)里面的微積分學(xué)習(xí)時經(jīng)常求不定積分,也就是原函數(shù),這個過程實際上進(jìn)行的就是符號運(yùn)算,我們通過對一些變量字符x等等的運(yùn)算,最后得出一個表達(dá)式

    2024年04月09日
    瀏覽(23)
  • 數(shù)學(xué)建模實戰(zhàn)Matlab繪圖

    數(shù)學(xué)建模實戰(zhàn)Matlab繪圖

    二維曲線、散點圖 繪圖命令: plot( x,y,’line specifiers’,’ PropertyName ’, PropertyValue ) 例子:繪圖表示年收入與年份的關(guān)系 ‘--r*’:-- 設(shè)置線型; r: 設(shè)置顏色為紅色; * 節(jié)點型號 ‘ linewidth ’:設(shè)置線寬;‘ markersize ’ :節(jié)點大小 常用命令: hold on(off):在一張圖上持續(xù)繪圖

    2024年01月21日
    瀏覽(22)
  • 數(shù)學(xué)建模-插值算法(Matlab)

    數(shù)學(xué)建模-插值算法(Matlab)

    注意:代碼文件僅供參考,一定不要直接用于自己的數(shù)模論文中 國賽對于論文的查重要求非常嚴(yán)格,代碼雷同也算作抄襲 如何修改代碼避免查重的方法:https://www.bilibili.com/video/av59423231? ?//清風(fēng)數(shù)學(xué)建模 簡單來說是根據(jù)已知點進(jìn)行線性數(shù)據(jù)預(yù)測,但數(shù)據(jù)太少需要通過數(shù)學(xué)方

    2023年04月26日
    瀏覽(29)
  • 在matlab中如何將數(shù)據(jù)按指定順序排列成矩陣

    在MATLAB中,可以使用sort函數(shù)對數(shù)據(jù)進(jìn)行排序,具體用法如下: 對一維數(shù)組進(jìn)行排序: sort(A) 對二維數(shù)組中每一行進(jìn)行排序: sort(A,2) 對二維數(shù)組中每一列進(jìn)行排序: sort(A,1) 按指定列進(jìn)行排序: sortrows(A,n) (n為指定的列數(shù)) 例如,對二維數(shù)組A中的第二列進(jìn)行排序可以使用sortrows(A,2) 需

    2024年02月13日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包