日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab强制数据类型转换

發(fā)布時間:2025/3/21 循环神经网络 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab强制数据类型转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


>> x=uint8(8);
>> class(x) %查看類型
ans =
uint8
>> y=double(x); %轉(zhuǎn)雙精度
>> class(y)
ans =
double

?

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

????????1、整型:(int8;uint8;int16;uint16;int32;uint32;int64;uint64)通過intmax(class)和intmin(class) 函數(shù)返回該類整型的最大值和最小值,例如intmax(‘int8’)=127;

????????2、浮點:(single;double)

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

? ? ? ?3、邏輯:(logical)

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

? ? ? ? ?4、字符:(char)

Matlab中的輸入字符需使用單引號。字符串存儲為字符數(shù)組,每個元素占用一個ASCII字符。如日期字符:DateString=’9/16/2001’ 實際上是一個1行9列向量。構(gòu)成矩陣或向量的行字符串長度必須相同。可以使用char函數(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)?移除字符串尾部包含的空字符
???????(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)以及日期向量如 1996 10 2 0 0 0,依次為年月日時分秒。

常用的日期操作函數(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ù)。

7、構(gòu)建結(jié)構(gòu)數(shù)組

(1)賦值方法

下面的賦值命令產(chǎn)生一個名為patient的結(jié)構(gòu)數(shù)組,該數(shù)組包含三個字段:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];

在命令區(qū)內(nèi)輸入patient可以查看結(jié)構(gòu)信息:
name: 'John Doe'
billing: 127
test: [3x3 double]

繼續(xù)賦值可擴展該結(jié)構(gòu)數(shù)組:
patient(2).name = 'Ann Lane';
patient(2).billing = 28.50;
patient(2).test = [68 70 68; 118 118 119; 172 170 169];

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

(2)構(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});

(3)訪問結(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_r_r_r)可以賦予結(jié)構(gòu)字段名稱并訪問數(shù)據(jù)。例如字段名為expression_r_r_r、結(jié)構(gòu)名為structName,訪問其中第7行1至25列數(shù)據(jù)可以使用命令:structName.(expression_r_r_r)(7,1:25)。

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

testscores.wang.week(1:25) = ...
????????[95 89 76 82 79 92 94 92 89 81 75 93 ...
?????????85 84 83 86 85 90 82 82 84 79 96 88 98];

testscores.chen.week(1:25) = ...
?????????????????[87 80 91 84 99 87 93 87 97 87 82 89 ...
???????????????????86 82 90 98 75 79 92 84 90 93 84 78 81];

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

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

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

function avg = 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ù)。

(4)添加和刪除結(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)。

8、單元格數(shù)組:(cell)

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

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

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

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

A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};
???????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 = {[1 2], [3 4]; [5 6], [7 8]};

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

Cell函數(shù)。如:
B = cell(2, 3);
B(1,3) = {1:3};

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

通過索引可直接訪問單元格數(shù)組中的數(shù)據(jù)元素,例如:
N{1,1} = [1 2; 4 5];
N{1,2} = 'Name';
N{2,1} = 2-4i;
N{2,2} = 7;
c = N{1,2}
d = N{1,1}(2,2)

9、函數(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)。例:

function x = plotFHandle(fhandle, data)
plot(data, fhandle(data))

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

數(shù)據(jù)類型轉(zhuǎn)換如C語言中的強制類型轉(zhuǎn)換相似e.g.:

y=9;

z=double(y);


???Matlab中的圖像數(shù)據(jù)類型轉(zhuǎn)換
MATLAB中讀入圖像的數(shù)據(jù)類型是uint8,而在矩陣中使用的數(shù)據(jù)類型是double因此 I2=im2double(I1) :把圖像數(shù)組I1轉(zhuǎn)換成double精度類型;如果不轉(zhuǎn)換,在對uint8進行加減時會產(chǎn)生溢出,可能提示的錯誤為:Function '*' is not defined for values of class 'uint8'。

??

?圖像數(shù)據(jù)類型轉(zhuǎn)換函數(shù)
默認(rèn)情況下,matlab將圖像中的數(shù)據(jù)存儲為double型,即64位浮點數(shù);matlab還支持無符號整型(uint8和uint16);uint型的優(yōu)勢在于節(jié)省空間,涉及運算時要轉(zhuǎn)換成double型。
????im2double():將圖像數(shù)組轉(zhuǎn)換成double精度類型
?????im2uint8():將圖像數(shù)組轉(zhuǎn)換成unit8類型
?????im2uint16():將圖像數(shù)組轉(zhuǎn)換成unit16類型

?

//

?

%假設(shè)你的文件名在c盤 叫test.txt fid=fopen('c:\test.txt'); data=textscan(fid,'%s','delimiter','\n');%把數(shù)據(jù)按行讀入 fclose(fid);%關(guān)閉文件 data=data{1,1}; A=textscan(data{1},'%n','delimiter',' ');把第一行按空格為分割賦給A B=textscan(data{2},'%n','delimiter',' ');同上B C=textscan(data{3},'%n','delimiter',' ');同上C A=A{1};B=B{1};C=C{1};把A,B,C由cell轉(zhuǎn)成向量 %這樣的話無論這三行分別有多少個數(shù)據(jù)都可以的。 截取字符串部分:str(2:length(str)-1))

總結(jié)

以上是生活随笔為你收集整理的matlab强制数据类型转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。