五 陣列和陣列運算

2021-07-03 07:43:06 字數 2409 閱讀 9715

5.1簡單陣列前面幾節運算只涉及單個數字,稱之為標量,標量是數學的基礎。

定義陣列、和c+一樣,定義陣列用,中間不同數值用空格或逗號隔開。

如我們要算sin(x)在0到pi內的值,如下

>> x=[.1*pi .2*pi .3*pi .4*pi .5*pi.6*pi .7*pi .8*pi .9*pi pi];

>> sin(x)

5.2陣列定址或下標為方便描述,我們定義x陣列為x=[1,2,3,4,5,6,7,8,9],注意=符號

取址語法形式:

x(3)   //取陣列第三個元素,這裡需要注意的是大括號

x(1:5) //取數1到5個元素

x(5:end) //返回5到最後乙個元素值

x(4:-1:1) //該語法表示從第4個開始,向下遞減,到1結束,如本例輸出為4 3 2 1

x(2 2 7) //同理,從第2個開始,以2遞增定址,到7截止 如本例輸出2 4 6

x([5 2 7]) //隨機抽取元素,如本例中是取第5、2 、7個元素、[5 2 7]也是陣列,作用是用//於抽取固定陣列值。 索引號可以相同

x(2.3) //不合法,非整數值下標

x(100) //不合法,越界

5.3陣列結構上面我們逐個輸入陣列數值,顯然在定義數量相對大的陣列就不適用了。下面另外兩種方法:

x=(0:0.1:1)*pi  //從0開始,步長為0.1,到1結束,每個元素乘pi。共11個元素的陣列

//冒號表示法能指定資料點增量,但無法指定個數

linspace(first_value,last_value,number_of_value)

x=linspace(0,pi,11)

//和上面生成的陣列效果一樣,這種方式不用指定增量,且能直接指定個數

上面的方式建立的陣列都是等間隔分布的,有些情況要建立對數間隔的陣列。語法如下:

logspace(0,2,11)

//模擬上面,很容易懂,建立從10^0開始10^2結束共11個元素的陣列

使用冒號表示法和函式linspace和logspace的時候。我們習慣把表示式用方括號表示出來。如:

>>a=[1:7]

>>b=[linspace(1,7,5)]

雖然上述表示會讓表達看起來更清晰,但方括號表示連線操作,這樣會造成多餘的運算。但圓括號不會。如

>>a=(1:7); //我們可以根據需要選擇合適運算。

上面定義的陣列都是間隔均勻的,對於間隔不均勻我們可以這麼定義。如:

a=1:5;  //1 2 3 4 5

b=1:2:9 //1 3 5 7 9

c=[b a]  //1 3 4 7 9 1 2 3 4 5

d=[a(1:2:5) 1 0]   //1 3 5 1 0 由a的第1、3、5個元素和後面的附加元素組成

總結如下圖:

5.4、陣列方向

陣列包含一行多列,具有行方向特性,我們稱之為行向量。同樣也有一列多行。同樣定義陣列,我們上面用,或空格分開,陣列以行顯示。當我們需要以列顯示時、

x=[1;2;3;4;5]   //以分號作為分格符

//以空格或逗號隔開的元素指定不同列元素,;號指定不同行元素。

同樣我們定義

x=1:5  //1 2 3 4 5

y=x』   //這樣就轉置了

(』)我們稱之為轉置操作符,但該操作符符操作的是複數陣列時,虛部的符號也變化了。我們說(』)是共軛轉置

(.』)帶前置點號的轉置操作符。只進行轉置,不進行共軛操作。

顯然對實數而言這兩個符號等價。

z=complex(x,x)    //我們可以具體例項一下

我們同樣可以定義多行多例陣列,如:

a=[1 2 3 4;5 6 7 8]

//分號同樣用於分隔列中的元素,如這裡就是告訴mat從5建立新行

當然我們也可以這樣定義

a=[1 2 3 4

56 7 8]   //回車鍵效果和上述分號一致

需要注意的是:mat嚴格遵循所有行列數必須相同。如下定義是錯誤的:

a=[1 2 3 4;1 2 3]  //錯誤行列資料個數不相等

運算和陣列

因為短是2個位元組,每個位址不同於2。很難得看到 和 用這樣的方式與指標運算子。然而,更常見的是看到 或 運算元被用來增加或減少乙個指標指向陣列中的下乙個或前乙個元素。指標的算術運算和陣列 如果是乙個指標,指向陣列的第乙個元素 元素0 的陣列,並新增1到指標已經返回下乙個物件,然後排列 1點必須到二...

算術運算和陣列

因為短是2個位元組,每個位址不同於2。很難得看到 和 用這樣的方式與指標運算子。然而,更常見的是看到 或 運算元被用來增加或減少乙個指標指向陣列中的下乙個或前乙個元素。指標的算術運算和陣列 如果是乙個指標,指向陣列的第乙個元素 元素0 的陣列,並新增1到指標已經返回下乙個物件,然後排列 1點必須到二...

陣列和陣列函式

1 如果對全部元素賦初值 即提供全部初始資料 則定義陣列時對第一維的長度可以不指定,但第二維的長度不能省。2.gets 字元陣列 1 格式 gets 字元陣列名 2 作用 從終端輸入乙個字串到字元陣列,並且得 到乙個函式值。該函式值是字元陣列的首位址。gets函式這裡注意 如果和scanf s k ...