matlab数组操作
有很多種方法,這里就列舉幾種,要是各位有什么想要補(bǔ)充,可以留在評(píng)論區(qū)。
一、生成:
1.直接用方括號(hào)寫
2.用:生成
a = 1:5; disp(a);第二個(gè)版本(等差數(shù)列)
a = 1:2:10; disp(a);3.linspace(a,b,n);[a,b] n-1等分,用那個(gè)等分點(diǎn)構(gòu)成這個(gè)序列
(一般用于畫圖)
4.zeros函數(shù)
a = zeros(1,10); disp(a);5.eye函數(shù)(這個(gè)生成的是對角陣,要是不夠?qū)顷?#xff0c;就取這個(gè)對角陣的左上角)
a = eye(1,10); disp(a);6.ones函數(shù)
a = ones(1,10); disp(a);7.矩陣拼接生成
a = ones(1,10); b = zeros(1,10); disp([a,b]); % 同行拼接 a = ones(1,10); b = zeros(1,10); disp([a;b]); % 列拼接8.空數(shù)組
a = []; % 這樣就完成了生成要理解空數(shù)組的存在的意義需要一定的計(jì)算機(jī)的功底,如果沒興趣可以不用去了解的。
不過,我們還是進(jìn)入我們的應(yīng)用層面的思考:
我寫過篇關(guān)于Python中的None等的TrueFalse問題的探討文章
點(diǎn)擊這個(gè)可以查看
因此,我對這個(gè)做了類似的處理
輸出的是False
情況是類似的
二、刪除行列
[]還有一個(gè)應(yīng)用就是刪除矩陣的部分
這樣就刪除了第1,3行(要注意的是,matlab這里比較符合數(shù)學(xué)人的思維,不像計(jì)算機(jī)的從0計(jì)數(shù))
類似的,刪除1,2列
三、提取和展示
提取行
提取列(原理類似)
a = [1,2,3;4,5,6;7,8,9]; disp(a(:,[1,3])); a = [1,2,3;4,5,6;7,8,9]; disp(a(:,1));有趣的事
a = [1,2,3;4,5,6;7,8,9]; disp(a(1));我一開始不太理解這樣的操作,我一看,這樣的結(jié)果居然不是第一行。
很不理解,于是,我開始了探索
我先是很好奇,那我輸入4呢?
結(jié)果是2
我就在想,是不是會(huì)有一個(gè)返還的機(jī)制,就是走到越界之后,就再往回走一遍。然后我就做了下面的操作。看看是不是也是2
結(jié)果是
4
這時(shí)候,靈機(jī)一動(dòng),我想起了矩陣有一個(gè)很騷的操作
這樣就是將a按列展開
輸出結(jié)果是
1
4
7
2
5
8
3
6
9
這樣看來,就很好理解了
在MATLAB內(nèi)部,在矩陣上,對于單獨(dú)的數(shù)采用類似操作方法
為了驗(yàn)證我的觀點(diǎn),我做了最好玩的一個(gè)實(shí)驗(yàn)
a = [1,2,3;4,5,6;7,8,9]; disp(a(10));這個(gè)代碼是會(huì)報(bào)錯(cuò)的
然后輸出的錯(cuò)誤是
‘索引超出矩陣維度。’
證明了之前的觀點(diǎn)。(本人懶得看文檔了)
//======回到之前的做那個(gè)提取
還有就是提取子串(,子矩陣)
這樣就是拿對應(yīng)列和對應(yīng)行的方法。
要是想要拿部分列呢?比如對應(yīng)的,我要拿一個(gè)規(guī)模大于10 * 10 的前10行怎么搞?
哈哈哈,是不是就有人懵了?
其實(shí)很有趣
注意到,這種提取的是用了數(shù)組的生成的對應(yīng)項(xiàng)的
所以,我們可以用到前面的數(shù)組生成的部分方法做
如:
連續(xù)的三行,和第1,2列,這樣看不出來什么,但是要是規(guī)模大的時(shí)候呢?比如說是100*100的中間50行和50列組合成的東西呢?
(別告訴我,用不到emm)
這樣就可以做到了
對了,如果你說這個(gè)是會(huì)生成51*51也對,畢竟是包括了首末的。
所以,可以根據(jù)自己的需求,進(jìn)行篩選。
生成三角陣
可能有些時(shí)候,由于版本不同,顯示的情況有點(diǎn)不一樣。但大致上是一致的。
總結(jié)
以上是生活随笔為你收集整理的matlab数组操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab随机数生成
- 下一篇: matlab画图(复数的直角坐标和极坐标