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

時間 2021-07-01 01:56:46

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中求極限,在Matlab中 求極限

3 syms a x limit 1 a x 2 x x,inf ans exp 2 a 4 syms x y z x.2 y.2 exp x.2 y.2 x y dxy diff diff z,x y 5 syms x int exp x.2 2 0,1 ans 2 1 2 pi 1 2 erf ...

matlab中怎麼求陣列中非零元素的個數

a 1 2 0 0 1 1 1 3 0 b a 0 比較是否為0 b 1 1 0 0 1 1 1 1 0 result sum b 不為0個數求和 result nonzeros x 是求非零元素,提取這些元素,並不適合個數統計 重要功能 matlab matlab 語言的單元測試框架 tradin...

陣列矩陣向量有什麼區別,MATLAB中矩陣和陣列有什麼區別?

時康震蕭放 4.1陣列運算和矩陣運算 從外觀形狀和資料結構來看,二維陣列和數學中的矩陣沒有區別.但是,矩陣作為一種變換或對映算符的體現,矩陣運算有著明確而嚴格的數學規則.而陣列運算是matlab軟體所定義的規則,其目的是為了資料管理方面,操作簡單,指令形式自然和執行計算有效.所以,在使用matlab...