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

歡迎訪問 生活随笔!

生活随笔

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

循环神经网络

matlab强制数据类型转换

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


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

?

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

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

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

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

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

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

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

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

例如,命令 name = ['abc' ; 'abcd'] 將觸發錯誤警告,因為兩個字符串的長度不等,此時可以通過空字符湊齊如:name = ['abc ' ; 'abcd'],更簡單的辦法是使用char函數:char(‘abc’,’abcd’),Matlab自動填充空字符以使長度相等,因此字符串矩陣的列緯總是等于最長字符串的字符數.

例如size(char(‘abc’,’abcd’))返回結果[2,4],即字符串’abc’實際存在的是’abc ’,此時如需提取矩陣中的某一字符元素,需要使用deblank函數移除空格如name =char(‘abc’,’abcd’); deblank(name(1,:))。

此外,Matlab同時提供一種更靈活的單元格數組方法,使用函數cellstr可以將字符串數組轉換為單元格數組:

data= char(‘abc’,’abcd’)
???????length(data(1,:))?->? 4
???????cdata=cellstr(data)
???????length(cdata{1})?->?3

常用的字符操作函數

blanks(n)?返回n個空字符
???????deblank(s)?移除字符串尾部包含的空字符
???????(string)?將字符串作為命令執行
???????findstr(s1,s2)?搜索字符串
???????ischar(s)?判斷是否字符串
????????isletter(s)?判斷是否字母
???????lower(s)?轉換小寫
???????upper(s)?轉換大寫
???????strcmp(s1,s2)?比較字符串是否相同
???????strncmp(s1,s2,n)?比較字符串中的前n個字符是否相同
???????strrep(s1,s2,s3)?將s1中的字符s2替換為s3

5、日期和時間

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

常用的日期操作函數

datestr(d,f)?將日期數字轉換為字符串
???????datenum(str,f)?將字符串轉換為日期數字
???????datevec(str)?日期字符串轉換向量
???????weekday(d)?計算星期數
???????eomday(yr,mth)?計算指定月份最后一天
???????calendar(str)?返回日歷矩陣
????????clock?當前日期和時間的日期向量
???????date?當前日期字符串
???????now?當前日期和時間的序列數

6、結構

結構是包含已命名“數據容器”或字段的數組。結構中的字段可以包含任何數據。

7、構建結構數組

(1)賦值方法

下面的賦值命令產生一個名為patient的結構數組,該數組包含三個字段:
patient.name = 'John Doe';
patient.billing = 127.00;
patient.test = [79 75 73; 180 178 177.5; 220 210 205];

在命令區內輸入patient可以查看結構信息:
name: 'John Doe'
billing: 127
test: [3x3 double]

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

賦值后結構數組變為[1 2]。

(2)構建結構數組:struct函數?
函數基本形式為: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)訪問結構數據

以下都是合法的結構數組訪問命令:
mypatients = patient(1:2)?獲取子結構數據
mypatients(1)?訪問結構數據
patient(2).name?訪問結構數據中的特定字段
patient(3).test(2,2)?訪問結構數據中的特定字段(該字段為數組)
bills = [patient.billing]?訪問多個結構
tests = {patient(1:2).test}?提取結構數據轉換成單元格數組

使用結構字段的動態名稱

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

例如,存在一個學生每周成績數據結構數組,其數據通過以下方式建立:

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];

即結構名為testscores,字段使用每個學生的名稱命名,分別為wang和chen,每個學生下面包含名為week的成績結構數組。

現計算給定結構名稱、學生名稱和起止周數的平均分數。

在命令窗口中輸入 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) 計算學生陳從第7周到第22周的平均分數。

(4)添加和刪除結構字段

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

刪除字段使用rmfield函數,如patient2 = rmfield(patient, 'name') 刪除name字段并產生新的結構。

8、單元格數組:(cell)

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

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

(1)構建單元格數組:賦值方法

使用花括號標識可直接創建單元格數組,如:

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};

上述命令創建2*2的單元格數組A。繼續添加單元格元素直接使用賦值如A(2,3)={5}即可,注意需使用花括號標識。簡化的方法是結合使用花括號(單元格數組)和方括號()創建,如C = {[1 2], [3 4]; [5 6], [7 8]};

(2)構建單元格數組:函數方法

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

(3)訪問數據

通過索引可直接訪問單元格數組中的數據元素,例如:
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、函數句柄

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

使用句柄調用函數的形式是 fhandle(arg1, arg2, ..., argn) 或 fhandle()(無參數)。如:
trigFun(1)。例:

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

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

數據類型轉換如C語言中的強制類型轉換相似e.g.:

y=9;

z=double(y);


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

??

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

?

//

?

%假設你的文件名在c盤 叫test.txt fid=fopen('c:\test.txt'); data=textscan(fid,'%s','delimiter','\n');%把數據按行讀入 fclose(fid);%關閉文件 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轉成向量 %這樣的話無論這三行分別有多少個數據都可以的。 截取字符串部分:str(2:length(str)-1))

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。