嫒美直播免费版app下载-嫒美直播永久免费版下载-嫒美直播最新下载安装

當(dāng)前位置:首頁 > 教育綜合 > 正文

I(:,72*(i-1)+1:72*i)=cell{1,xu(i)};為什么不兼容

MATLAB中變量的基本數(shù)據(jù)類型是什么?

Matlab中有15種基本數(shù)據(jù)類型,主要是整型、浮點、邏輯、字符、日期和時間、結(jié)構(gòu)數(shù)組、單元格數(shù)組以及函數(shù)句柄等。Matlab主要數(shù)據(jù)類型的結(jié)構(gòu)圖如下所失:

1.整型

整型:通過intmax(class)和intmin(class)函數(shù)返回該類整型的最大值和最小值,例如intmax(‘int8’)=127

2.浮點

浮點數(shù):REALMAX('double')和REALMAX('single')分別返回雙精度浮點和單精度浮點的最大值,REALMIN('double')和REALMIN('single')分別返回雙精度浮點和單精度浮點的最小值。

3.邏輯

Logical:下例是邏輯索引在矩陣操作中的應(yīng)用,將5*5矩陣中大于0.5的元素設(shè)定為0:

A=rand(5);

A(A>0.5)=0

4.字符

Matlab中的輸入字符需使用單引號。字符串存儲為字符數(shù)組,每個元素占用一個ASCII字符。如日期字符:DateString=’9/16/2001’實際上是一個1行9列向量。構(gòu)成矩陣或向量的行字符串長度必須相同??梢允褂胏har函數(shù)構(gòu)建字符數(shù)組,使用strcat函數(shù)連接字符。

例如,命令name=['abc';'abcd']將觸發(fā)錯誤警告,因為兩個字符串的長度不等,此時可以通過空字符湊齊如:name=['abc';'abcd'],更簡單的辦法是使用char函數(shù):char(‘a(chǎn)bc’,’abcd’),Matlab自動填充空字符以使長度相等,因此字符串矩陣的列緯總是等于最長字符串的字符數(shù),例如size(char(‘a(chǎn)bc’,’abcd’))返回結(jié)果[2,4],即字符串’abc’實際存在的是’abc’,此時如需提取矩陣中的某一字符元素,需要使用deblank函數(shù)移除空格如name=char(‘a(chǎn)bc’,’abcd’);deblank(name(1,:))。此外,Matlab同時提供一種更靈活的單元格數(shù)組方法,使用函數(shù)cellstr可以將字符串?dāng)?shù)組轉(zhuǎn)換為單元格數(shù)組:

data=char(‘a(chǎn)bc’,’abcd’)

length(data(1,:))->?4

cdata=cellstr(data)

length(cdata{1})->?3

常用的字符操作函數(shù)

blanks(n)返回n個空字符

deblank(s)移除字符串尾部包含的空字符

eval(string)將字符串作為命令執(zhí)行

findstr(s1,s2)搜索字符串

ischar(s)判斷是否字符串

isletter(s)判斷是否字母

lower(s)轉(zhuǎn)換小寫

upper(s)轉(zhuǎn)換大寫

strcmp(s1,s2)比較字符串是否相同

strncmp(s1,s2,n)比較字符串中的前n個字符是否相同

strrep(s1,s2,s3)將s1中的字符s2替換為s3

5.日期和時間

Matlab提供三種日期格式:日期字符串如’1996-10-02’,日期序列數(shù)如729300(0000年1月1日為1)以及日期向量如1996102000,依次為年月日時分秒。

常用的日期操作函數(shù)

datestr(d,f)將日期數(shù)字轉(zhuǎn)換為字符串

datenum(str,f)將字符串轉(zhuǎn)換為日期數(shù)字

datevec(str)日期字符串轉(zhuǎn)換向量

weekday(d)計算星期數(shù)

eomday(yr,mth)計算指定月份最后一天

calendar(str)返回日歷矩陣

clock當(dāng)前日期和時間的日期向量

date當(dāng)前日期字符串

now當(dāng)前日期和時間的序列數(shù)

6.結(jié)構(gòu)

結(jié)構(gòu)是包含已命名“數(shù)據(jù)容器”或字段的數(shù)組。結(jié)構(gòu)中的字段可以包含任何數(shù)據(jù),例如:

構(gòu)建結(jié)構(gòu)數(shù)組:賦值方法

下面的賦值命令產(chǎn)生一個名為patient的結(jié)構(gòu)數(shù)組,該數(shù)組包含三個字段:

patient.name='JohnDoe';

patient.billing=127.00;

patient.test=[797573;180178177.5;220210205];

在命令區(qū)內(nèi)輸入patient可以查看結(jié)構(gòu)信息:

name:'JohnDoe'

billing:127

test:[3x3double]

繼續(xù)賦值可擴(kuò)展該結(jié)構(gòu)數(shù)組:

patient(2).name='AnnLane';

patient(2).billing=28.50;

patient(2).test=[687068;118118119;172170169];

賦值后結(jié)構(gòu)數(shù)組變?yōu)閇12]。

構(gòu)建結(jié)構(gòu)數(shù)組:struct函數(shù)

函數(shù)基本形式為:strArray=struct('field1',val1,'field2',val2,...)

例如:

weather(1)=struct('temp',72,'rainfall',0.0);weather(2)=struct('temp',71,'rainfall',0.1);

weather=repmat(struct('temp',72,'rainfall',0.0),1,3);

weather=struct('temp',{68,80,72},'rainfall',{0.2,0.4,0.0});

訪問結(jié)構(gòu)數(shù)據(jù)

以下都是合法的結(jié)構(gòu)數(shù)組訪問命令:

mypatients=patient(1:2)獲取子結(jié)構(gòu)數(shù)據(jù)

mypatients(1)訪問結(jié)構(gòu)數(shù)據(jù)

patient(2).name訪問結(jié)構(gòu)數(shù)據(jù)中的特定字段

patient(3).test(2,2)訪問結(jié)構(gòu)數(shù)據(jù)中的特定字段(該字段為數(shù)組)

bills=[patient.billing]訪問多個結(jié)構(gòu)

tests={patient(1:2).test}提取結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)換成單元格數(shù)組

使用結(jié)構(gòu)字段的動態(tài)名稱

通過structName.(expression)可以賦予結(jié)構(gòu)字段名稱并訪問數(shù)據(jù)。例如字段名為expression、結(jié)構(gòu)名為structName,訪問其中第7行1至25列數(shù)據(jù)可以使用命令:structName.(expression)(7,1:25)。

例如,存在一個學(xué)生每周成績數(shù)據(jù)結(jié)構(gòu)數(shù)組,其數(shù)據(jù)通過以下方式建立:

testscores.wang.week(1:25)=...

[958976827992949289817593...

85848386859082828479968898];

testscores.chen.week(1:25)=...

[878091849987938797878289...

86829098757992849093847881];

即結(jié)構(gòu)名為testscores,字段使用每個學(xué)生的名稱命名,分別為wang和chen,每個學(xué)生下面包含名為week的成績結(jié)構(gòu)數(shù)組。

現(xiàn)計算給定結(jié)構(gòu)名稱、學(xué)生名稱和起止周數(shù)的平均分?jǐn)?shù)。

在命令窗口中輸入editavgscore.m,輸入以下代碼后保存文件:

functionavg=avgscore(struct,student,first,last)

avg=sum(struct.(student).week(first:last))/(last-first+1);

在命名窗口中輸入:avgscore(testscores,'chen',7,22)計算學(xué)生陳從第7周到第22周的平均分?jǐn)?shù)。

添加和刪除結(jié)構(gòu)字段

命令[struct](index).(field)可添加或修改字段。如patient(2).ssn='000-00-0000'在結(jié)構(gòu)patient中添加一個名為ssn的字段。

刪除字段使用rmfield函數(shù),如patient2=rmfield(patient,'name')刪除name字段并產(chǎn)生新的結(jié)構(gòu)。

單元格數(shù)組

單元格數(shù)組提供了不同類型數(shù)據(jù)的存儲機(jī)制,可以儲存任意類型和任意緯度的數(shù)組。

訪問單元格數(shù)組的規(guī)則和其他數(shù)組相同,區(qū)別在于需要使用花括號{}訪問,例如A{2,5}訪問單元格數(shù)組A中的第2行第5列單元格。

構(gòu)建單元格數(shù)組:賦值方法

使用花括號標(biāo)識可直接創(chuàng)建單元格數(shù)組,如:

A(1,1)={[143;058;729]};

A(1,2)={'abcd'};

A(2,1)={3+7i};

A(2,2)={-pi:pi/10:pi};

上述命令創(chuàng)建2*2的單元格數(shù)組A。繼續(xù)添加單元格元素直接使用賦值如A(2,3)={5}即可,注意需使用花括號標(biāo)識。簡化的方法是結(jié)合使用花括號(單元格數(shù)組)和方括號()創(chuàng)建,如C={[12],[34];[56],[78]};

構(gòu)建單元格數(shù)組:函數(shù)方法

Cell函數(shù)。如:

B=cell(2,3);

B(1,3)={1:3};

訪問數(shù)據(jù)

通過索引可直接訪問單元格數(shù)組中的數(shù)據(jù)元素,例如:

N{1,1}=[12;45];

N{1,2}='Name';

N{2,1}=2-4i;

N{2,2}=7;

c=N{1,2}

d=N{1,1}(2,2)

函數(shù)句柄

函數(shù)句柄是用于間接調(diào)用一個函數(shù)的Matlab值或數(shù)據(jù)類型。在調(diào)用其它函數(shù)時可以傳遞函數(shù)句柄,也可在數(shù)據(jù)結(jié)構(gòu)中保存函數(shù)句柄備用。通過命令形式fhandle=@functionname可以創(chuàng)建函數(shù)句柄,例如trigFun=@sin,或匿名函數(shù)sqr=@(x)x.^2;。

使用句柄調(diào)用函數(shù)的形式是fhandle(arg1,arg2,...,argn)或fhandle()(無參數(shù))。如:

trigFun(1)。例:

functionx=plotFHandle(fhandle,data)

plot(data,fhandle(data))

plotFHandle(@sin,-pi:0.01:pi)

c++的一個小問題--看不懂

while循環(huán)體就是把a(bǔ)[]數(shù)組里的元素從最后一個“1”開始與7比較,如果小于7那么將該元素往后移一位,比如“1”比7小,那么將把它從現(xiàn)在的第7位移動到第8位(注意移位后數(shù)組a就變成了擁有8個元素的一維數(shù)組),顯然從1開始,1,2,4,5,6這五個數(shù)都比7小,所以將它們五個都往后移了一位。 while循環(huán)到數(shù)組元素“6”時結(jié)束循環(huán),執(zhí)行 *(a+i+1)=x語句,因為while循環(huán)了5次,所以i從7減少到2,所以此執(zhí)行語句即是將x的值7賦給數(shù)組a的第三個元素,所以a[2]=7。 接下來for(i=0;ijava冒泡排序法代碼

冒泡排序是比較經(jīng)典的排序算法。代碼如下:

for(int i=1;ifor(int j=1;j//交換位置
}

拓展資料:

原理:比較兩個相鄰的元素,將值大的元素交換至右端。

思路:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。

第一趟比較完成后,最后一個數(shù)一定是數(shù)組中最大的一個數(shù),所以第二趟比較的時候最后一個數(shù)不參與比較;

第二趟比較完成后,倒數(shù)第二個數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時候最后兩個數(shù)不參與比較;

依次類推,每一趟比較次數(shù)-1;

……

舉例說明:要排序數(shù)組:int[]arr={6,3,8,2,9,1};

for(int i=1;ifor(int j=1;j//交換位置
}

參考資料:冒泡排序原理

EXCEL 多表格 批量查找

文件發(fā)給我

Sub 多表查找()


Dim i, j As Integer

Dim findcell, findcells As Range

Dim sr As String

Dim lastrow As Integer

Dim sh As Worksheet

sr = InputBox("輸入要查找的內(nèi)容")

If Sheets(1).Name <> sr Then

Set sh = Sheets.Add

sh.Move before:=Sheets(1)

sh.Name = sr

End If

For i = 2 To Sheets.Count


Set findcells = FindAll(SearchRange:=Sheets(i).Cells, FindWhat:=sr, _

LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchCase:=False)

If Not findcells Is Nothing Then

For Each findcell In findcells

j = j + 1

findcell.EntireRow.Copy Sheets(sr).Rows(j)

Next findcell

Else

GoTo jixu

End If

jixu:

Next i

End Sub

Function FindAll(SearchRange As Range, FindWhat As String, _

Optional LookIn As XlFindLookIn = xlValues, Optional LookAt As XlLookAt = xlWhole, _

Optional SearchOrder As XlSearchOrder = xlByRows, _

Optional MatchCase As Boolean = False) As Range

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

' 返回SearchRange區(qū)域中含有FindWhat所代表的值的所有單元格組成的Range對象

' 其參數(shù)與Find方法的參數(shù)相同

' 如果沒有找到單元格,將返回Nothing.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim FoundCell As Range

Dim FoundCells As Range

Dim lastcell As Range

Dim FirstAddr As String

With SearchRange

Set lastcell = .Cells(.Cells.Count)

End With

Set FoundCell = SearchRange.Find(what:=FindWhat, After:=lastcell, _

LookIn:=LookIn, LookAt:=LookAt, SearchOrder:=SearchOrder, MatchCase:=MatchCase)

If Not FoundCell Is Nothing Then

Set FoundCells = FoundCell

FirstAddr = FoundCell.Address

Do

Set FoundCells = Application.Union(FoundCells, FoundCell)

Set FoundCell = SearchRange.FindNext(After:=FoundCell)

Loop Until (FoundCell Is Nothing) Or (FoundCell.Address = FirstAddr)

End If

If FoundCells Is Nothing Then

Set FindAll = Nothing

Else

Set FindAll = FoundCells

End If

End Function

用c++怎么編程這一題?

#include

using namespace std;

int fun(int x)

{

int sum=0,t=0;

t=x;

while(t)

{

sum+=t%10;//各個位上的數(shù)累加

t/=10;

}

if(x%11==0&&sum==13)

return 1;

else

return 0;

}

int main()

{

int sum=0;

for(int i=1;i<=1000;i++)

{

if(fun(i)==1)

{

sum++;

cout<

if(sum%5==0)//sum計數(shù),同時sum是5的倍數(shù)換行;

cout<

}

}

cout<

cout<<"滿足條件的個數(shù)為:"<

return 0;

}

展開全文閱讀