在matlab中求元胞陣列中字元出現的次數

2021-07-01 01:56:35 字數 2219 閱讀 7671

1樓:匿名使用者

基本思路:遍歷元胞訪問元胞的每一個元素並判斷該元素是不是char型別,如果是則進行相應判斷做統計。考慮到cell內部巢狀cell的情況,需要用到遞迴,所以要把**寫成一個函式。

函式**如下:

function [ n ] = countcell( c,t )n=0;

s=prod(size(c));

for i=1:s

if strcmp(class(c),'char')n=n+sum(c==t);

elseif strcmp(class(c),'cell')n=n+countcell(c,t);

endend

end測試**:

%生成一個2×2×2cell,裡面填充隨機字串,然後內部巢狀一個2×2×2cell,裡面也填充隨機字串

clc;clear;

c=cell(2,2,2);

for j=1:7

c=char(randi([1,127],1,99));

endd=cell(2,2,2);

for j=1:8

d=char(randi([1,127],1,99));

endc=d;

n=countcell(c,'6')%統計cell裡面有幾個‘6’字元並輸出

程式沒有報錯。每次執行,n得到一個不同的正整數。程式無誤。

2樓:匿名使用者

首先,你的元胞陣列除了包含字串,還有沒有其他型別的資料?如果有,怎樣處理(例如,元胞陣列的元素自身還可以是元胞陣列,或者結構體的域是否要繼續判斷是不是字串)?

如果元胞陣列只包含字串,或者,只處理字串而忽略其他型別,則可以用一個迴圈遍歷元胞陣列的每個元素,對每個字串進行你要求的操作。

求一個字串中某字元出現的次數非常簡單,例如,求str中'a'的個數,直接用:sum(str=='a')

關於matlab cell元胞陣列中元素的引用問題

3樓:匿名使用者

matlab的元胞陣列是cell型別,可以有很多方法建立cell,對於你的要求,可以這樣:

1c =

定義方式(包括空格、逗號和分好的使用)跟普通陣列一樣,只是使用。

當然也可以這樣:

1234c = cell(1,3);c = 'beijing';c = 'capital of china';c = 'famous city';

cell的成員有兩種引用方式:

c(1,1)返回的是cell型別,大小為1*1的cellc返回的是那個元素本身的型別,在上面的例子裡就是字串

4樓:sun耶哈

引用方式一般是用a。在 matlab 中,所有的陣列都可以用“(i)”來表示其中的第i個元素,元胞陣列還可以用“”,表示第i個cell內部。比如我們想定義一個元胞陣列 a,並想給 a 的第一個元素賦值一個矩陣 [1 2 3],則有兩種辦法:

(1)直接給 a 的第一個元胞內部賦值一個矩陣 [1 2 3]:a = [1 2 3];(2)給 a 的第一個原素賦值一個元胞,元胞內部是矩陣 [1 2 3]:a(1) = 表示矩陣 [1 2 3] 放在一個元胞內,然後在給陣列 a 第一個元素,因為這是個陣列,所以 a 是一個元胞陣列。

上面兩種方式等價。

5樓:導超

一般的引用方式一般是用a,看你的習慣了,也不是說a(1)不對,兩個都對。

其實這兩個輸出有差別關鍵就在於,假如我們新建了一個cell(1,2),那麼我們給他賦值的形式可以是:a='aaa',也可以是a(1)= ,所以,你引用裡面的元素的時候,自然也有對應的兩種方式:a 和a(1) ,我們可以看到:

a=aaa a(1)='aaa' ,其實這裡面的aaa和'aaa'都是字串。因為前面的a裡面已經有大括號了,所以後面就不用了再顯示' '了,這也就間接的說明,{}的作用的 ''的作用其實是差不多的。只是一個作用在角標上,一個作用在真正的字元上。

所以捏,顯示有所差別。

給你個例子你就明白了:

num2str('ddddddd')

ans =

ddddddd

一個字串在matlab已經知道他是字串的情況下就會把''去掉。

但是致命的地方不是這裡,你仔細在你的工作空間觀察,你會發現,其實a(1)還是一個細胞,是一個結構,不能進行運算;而a是一個真正的變數,真正能夠進行數值運算!!

你能夠算:a+2 但是不能算a(1)+2 !!!!!!!

在matlab中怎樣求帶有引數的定積分

1 首先,如果要對quad函式傳遞附加引數 extraparameters 應該先搞清楚quad函式的呼叫格式 回q quad fun,a,b,tol,trace 其中,第4 5個引數分別是tol和trace,不答能想當然。你如果要傳遞附加引數,應該從第6個引數開始 儘管文件中並沒有提及,但quad...

VB在textbox中輸出陣列,VB給陣列賦值後如何在文字框Text裡輸出

private sub form load dim a 1 to 1000 as integer 在text的屬性欄設定這2個屬性 text1.scrollbars 2 vertical text1.multiline truetext1.text for i 1 to 1000 a i i tex...

matlab刪除陣列中滿足一定條件的元素

1 開啟matlab,在命令列視窗中輸入a 1 5 6 7 8 12 14 16 6 3 5 7 建立一個3行4列的a矩陣。2 輸入x find a 10 找到a陣列中大於10的元素的下標。3 按回車鍵之後,可以看到找到大於10的元素下標,下標位置是按一列開始數,一列一列數的。4 輸入a x 將a陣...