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