在matlab中cell函式的作用

時間 2021-07-01 01:43:38

1樓:

cell函式在本程式段中起到了定義一個陣列的作用。

程式功能:第一句a=cell(100,1),意思是定義一個100x1的陣列a

“for ……end”是迴圈結構,迴圈體中包含了兩個功能,一是使全域性變數flag減1,二是使a的狀態值返回到一個double型別的1x13的陣列。當全域性變數flag小於零時迴圈終止。

下面舉例說明cell函式的一般使用情形:

1,首先用cell函式來宣告一個新的單元陣列。

2,以宣告1x3形式的單元陣列v為例,輸入命令列v=

這裡需要補充說明b是我們預先宣告的一個向量。

3,上一步中的prod的功能是求積運算,所以當向量b的資料型別不同時得到的結果也是不同的。

若b為一個一維向量(或陣列),則一次prod運算後得到的是所有元素的乘積,二次prod運算則會將結果還原出來。

若b為矩陣,那麼一次prod運算後,對矩陣各列分別求積後得到一個新的陣列c,這個陣列即為輸出結果,二次prod運算後,則將陣列c中所有元素求積,然後輸出這個積。

以上是cell函式的具體作用。

2樓:

1,可使用cell函式建立一個空的單元陣列,也可以使用大括號建立。

2,比如要建立一個1x3的單元陣列c,則c=,可以把a設為一個向量,具體各cell資料型別讀者可以用c/c/c讀出來然後使用whos函式自己驗證。

3,其中prod是求積,若a為一個陣列(或一維向量),則一個prod後即可求出所有元素之積,第二個prod則還為原結果。

4,若a為一個矩陣,則第一個prod後針對各列求積,結果保留為一個陣列,第二個prod則對該陣列所有元素再求積,那麼兩個prod的結果即為對矩陣所有元素求積。

3樓:lnx的守望

一、1.cell就像很多個抽屜,每個裡面可以放不同型別的東西。cell函式是造元素為cell型別的矩陣

你這裡a=cell(100,1)就是造了100行1列的cell矩陣。當然此時每個元素裡什麼都還沒有。

2.a.flag=-1;

a.status=zeros(1,13);

就開始定義每個元素裡的資料了,可以看到每個cell裡儲存的都是結構型資料。

3.a.flag=-1;

a.status=zeros(1,13);

實際上並不是在a中儲存了兩個元素,而是儲存了一個結構型資料。

4.matlab中共有六種資料型別,分別為數值、字元、邏輯、結構、細胞、類。

其中細胞就是你這裡的cell型別資料。

5.a.flag=-1;

a.status=zeros(1,13);

實際上是在a中儲存了一個結構型別資料,它有兩個成員,一個名為flag、一個名為status,上面兩句話只不過是對這同一個元素的兩個成員進行賦值而已。

二、1.我們都熟悉陣列或矩陣的構成,比如一個m*n大小的矩陣,那麼它有m行、n列,共有m*n個元素。如果我們只在實數範圍內考慮,那麼對應的每一個元素就是一個實數,這是一般的實矩陣。

單元陣列也可以有m行n列,對應有m*n個元素。

2.所不同的是單元陣列中每個元素是一個cell(元胞),而每個cell可以由不同資料格式的矩陣構成,構成每個cell的矩陣大小也可以不同,可以是一個元素,也可以是一個向量,也可以是一個多維陣列

三、1.可使用cell函式建立一個空的單元陣列,具體可參考matlab中 help cell內容。也可以使用大括號建立,比如我們要建立一個1x3的單元陣列c,則c=,可以把a設為一個向量,具體各cell資料型別讀者可以用c/c/c讀出來然後使用whos函式自己驗證。

2.其中prod是求積,若a為一個陣列(或一維向量),則一個prod後即可求出所有元素之積,第二個prod則還為原結果。若a為一個矩陣,則第一個prod後針對各列求積,結果保留為一個陣列,第二個prod則對該陣列所有元素再求積,那麼兩個prod的結果即為對矩陣所有元素求積。

擴充套件資料

1. 細胞型資料的定義:

1)直接賦值定義:細胞型變數在定義時需要使用大括號,元素用逗號隔開

例: b =

2)使用cell函式,預先為細胞型變數定義空間

例: a = cell(m,n) 定義一個空的m行n列的cell型別

4樓:匿名使用者

那個a(i)應該是a才對吧。

——————————————————————

cell是matlab中的一種資料型別,用大括號定義,括號裡可以是任意型別的資料或矩陣。如b=

這就定義了一個cell型的變數b,裡面儲存的是一個矩陣[1;2]

要引用裡面的資料只要在大括號裡寫上對應的下標即可,如

b下面我們給b再加個元素,我們可以這樣定義

b(2)=

也可以利用引用的方法定義

b='hello'

第二種方法比第一種方法更方便所以更常用。

這樣b就有兩個元素了,b(1)是,b(2)是,每個元素都是cell型的(注意和b、b的區別,b是[1;2],b是'hello')

cell函式是造元素為cell型別的矩陣

你這裡a=cell(100,1)就是造了100行1列的cell矩陣。當然此時每個元素裡什麼都還沒有。

然後a.flag=-1;

a.status=zeros(1,13);

就開始定義每個元素裡的資料了,可以看到每個cell裡儲存的都是結構型資料。

————————————————————————————

a.flag=-1;

a.status=zeros(1,13);

實際上並不是在a中儲存了兩個元素,而是儲存了一個結構型資料。

matlab中共有六種資料型別,分別為數值、字元、邏輯、結構、細胞、類。

其中細胞就是你這裡的cell型別資料。

a.flag=-1;

a.status=zeros(1,13);

實際上是在a中儲存了一個結構型別資料,它有兩個成員,一個名為flag、一個名為status,上面兩句話只不過是對這同一個元素的兩個成員進行賦值而已。

實際上我們也可以自己定義一個結構變數,比如

a.one=[1;2];

a.two='hello';

a就是一個結構型的變數,它有兩個成員,分別叫one和two。但請記住,a是一個變數,不是兩個變數。

怎麼定義分段函式在matlab中

matlab提供了了兩種定義分段函式的方法 常規方法 使用if.else.語句定義不同的分支下面進行舉例說明 在matlab中定義如下分段函式1 常規方法 function y fun x if x 1 y x elseif x 2 y x 2 else y x 3 endreturn functi...

MATLAB中的DEBLANK函式

多瑙的萊茵 deblank函式是用來刪除字串中尾部空格的一個函式。在matlab中輸入help deblank就可以檢視其用法,在裡面都有詳細介紹。matlab處理字串的函式還有 strcmp 比較兩個字串是否完全相等,是,返回真,否則,返回假 strncmp 比較兩個字串前n個字元是否相等,是,返...

matlab怎麼定義函式啊,matlab中怎麼定義一個函式?

matlab中定義函式的方式有以下幾種 1 函式檔案 呼叫函式檔案 定義多個m檔案。呼叫函式檔案 myfile.m clear clcfor x 1 10 y mylfg x end 自定義函式檔案 mylfg.m function y mylfg x 注意 函式名 mylfg 必須與檔名 mylf...