matlab數據格式
A. MATLAB編程的數據類型是怎樣的
考慮到存貯和計算的消耗,程序中將數據表示成不同的類型,如整型用於表示整數、字元型用於表示字元、雙精度浮點型用於表示小數等。
MATLAB為了方便,編寫程序時可以不事先聲明變數的數據類型(當然,這是一個不好的習慣,但對於小程序,過分關注數據類型實在沒有必要),而且本身的數據類型也比較少:用於表示數值的數據類型有「整型(int)」和「雙精度型(double)」中的數據類型。對於數值型變數,如果不事先聲明,MATLAB默認數據類型為double型。整型數據類型按其所佔位元組數分多種,最值得注意的是uint8,這是用來表示圖像像素灰度值的一種數據類型。
B. matlab程序中怎麼定義數據的類型
語句
double s
的含義是將獲取字元s的asic碼
所以你的程序執行後,應該會「莫名其妙」的出現一行
ans =
115
這個就是s的asic碼
你的程序應該
1。刪除double s
2。s=s+a1(i,j);改為s=s+double(a1(i,j));
C. matlab 數據類型
Matlab中有15種基本數據類型,主要是整型、浮點、邏輯、字元、日期和時間、結構數組、單元格數組以及函數句柄等。Matlab主要數據類型的結構圖如下所失:
1.整型
整型:通過intmax(class)和intmin(class) 函數返回該類整型的最大值和最小值,例如intmax(『int8』)=127
2.浮點
浮點數:REALMAX('double')和REALMAX('single')分別返回雙精度浮點和單精度浮點的最大值,REALMIN('double')和REALMIN ('single')分別返回雙精度浮點和單精度浮點的最小值。
3.邏輯
Logical:下例是邏輯索引在矩陣操作中的應用,將5*5矩陣中大於0.5的元素設定為0:
A = rand(5);
A(A>0.5)=0
4.字元
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) 移除字元串尾部包含的空字元
eval(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.結構
結構是包含已命名「數據容器」或欄位的數組。結構中的欄位可以包含任何數據,例如:
構建結構數組:賦值方法
下面的賦值命令產生一個名為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]。
構建結構數組: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});
訪問結構數據
以下都是合法的結構數組訪問命令:
mypatients = patient(1:2) 獲取子結構數據
mypatients(1) 訪問結構數據
patient(2).name 訪問結構數據中的特定欄位
patient(3).test(2,2) 訪問結構數據中的特定欄位(該欄位為數組)
bills = [patient.billing] 訪問多個結構
tests = {patient(1:2).test} 提取結構數據轉換成單元格數組
使用結構欄位的動態名稱
通過structName.(expression)可以賦予結構欄位名稱並訪問數據。例如欄位名為expression、結構名為structName,訪問其中第7行1至25列數據可以使用命令:structName.(expression)(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周的平均分數。
添加和刪除結構欄位
命令[struct](index).(field)可添加或修改欄位。如patient(2).ssn = '000-00-0000' 在結構patient中添加一個名為ssn的欄位。
刪除欄位使用rmfield函數,如patient2 = rmfield(patient, 'name') 刪除name欄位並產生新的結構。
單元格數組
單元格數組提供了不同類型數據的存儲機制,可以儲存任意類型和任意緯度的數組。
訪問單元格數組的規則和其他數組相同,區別在於需要使用花括弧{}訪問,例如A{2,5}訪問單元格數組A中的第2行第5列單元格。
構建單元格數組:賦值方法
使用花括弧標識可直接創建單元格數組,如:
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]};
構建單元格數組:函數方法
Cell函數。如:
B = cell(2, 3);
B(1,3) = {1: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)
函數句柄
函數句柄是用於間接調用一個函數的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)
D. matlab有幾種文件類型
m文件.m
model文件.mdl
figure文件.fig
data文件.mat
stateflow文件.cdr
report generator文件.rpt
E. matlab程序如何輸入特定格式數據
可以將存有數據的文件載入到MATLAB中,例如,所有的數據存在.xls或者.txt文件中,那麼可以將他們直接載入到MATLAB中
Data=xlsread('data.xls');
Data=load('data.txt');
這樣,所有數據將以矩陣Data存在MATLAB中了,程序直接調用矩陣Data就可以了
出現這個錯誤是因為你的data.txt不在你MATLAB的當前工作目錄下,你可以將data.txt拖到MATLAB的工作目錄下,或者在當前工作目錄下新建一個。
總之是讓MATLAB能找得到data.txt
F. matlab數據輸出格式
這個是回車鍵的解釋引起的。
在記事本中輸入回車,實際上你輸入了兩個字元,一個回車,一個換行。
而如果在Linux下,你輸入回車,實際上只輸入了一個ASCII碼為10的回車,而沒有換行。
當然你如果用word或別的軟體打開的話,這些軟體可以認一個回車的東西。
要解決這個問題。
你如果在matlab中使用的是sprintf的話,
你將\n改成\r\n就可以了。
G. MATLAB中變數的基本數據類型是什麼
Matlab中有15種基本數據類型,主要是整型、浮點、邏輯、字元、日期和時間、結構數組、單元格數組以及函數句柄等。Matlab主要數據類型的結構圖如下所失:
1.整型
整型:通過intmax(class)和intmin(class)函數返回該類整型的最大值和最小值,例如intmax(『int8』)=127
2.浮點
浮點數:REALMAX('double')和REALMAX('single')分別返回雙精度浮點和單精度浮點的最大值,REALMIN('double')和REALMIN('single')分別返回雙精度浮點和單精度浮點的最小值。
3.邏輯
Logical:下例是邏輯索引在矩陣操作中的應用,將5*5矩陣中大於0.5的元素設定為0:
A=rand(5);
A(A>0.5)=0
4.字元
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)移除字元串尾部包含的空字元
eval(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)以及日期向量如1996102000,依次為年月日時分秒。
常用的日期操作函數
datestr(d,f)將日期數字轉換為字元串
datenum(str,f)將字元串轉換為日期數字
datevec(str)日期字元串轉換向量
weekday(d)計算星期數
eomday(yr,mth)計算指定月份最後一天
calendar(str)返回日歷矩陣
clock當前日期和時間的日期向量
date當前日期字元串
now當前日期和時間的序列數
6.結構
結構是包含已命名「數據容器」或欄位的數組。結構中的欄位可以包含任何數據,例如:
構建結構數組:賦值方法
下面的賦值命令產生一個名為patient的結構數組,該數組包含三個欄位:
patient.name='JohnDoe';
patient.billing=127.00;
patient.test=[797573;180178177.5;220210205];
在命令區內輸入patient可以查看結構信息:
name:'JohnDoe'
billing:127
test:[3x3double]
繼續賦值可擴展該結構數組:
patient(2).name='AnnLane';
patient(2).billing=28.50;
patient(2).test=[687068;118118119;172170169];
賦值後結構數組變為[12]。
構建結構數組: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});
訪問結構數據
以下都是合法的結構數組訪問命令:
mypatients=patient(1:2)獲取子結構數據
mypatients(1)訪問結構數據
patient(2).name訪問結構數據中的特定欄位
patient(3).test(2,2)訪問結構數據中的特定欄位(該欄位為數組)
bills=[patient.billing]訪問多個結構
tests={patient(1:2).test}提取結構數據轉換成單元格數組
使用結構欄位的動態名稱
通過structName.(expression)可以賦予結構欄位名稱並訪問數據。例如欄位名為expression、結構名為structName,訪問其中第7行1至25列數據可以使用命令:structName.(expression)(7,1:25)。
例如,存在一個學生每周成績數據結構數組,其數據通過以下方式建立:
testscores.wang.week(1:25)=...
[958976827992949289817593...
85848386859082828479968898];
testscores.chen.week(1:25)=...
[878091849987938797878289...
86829098757992849093847881];
即結構名為testscores,欄位使用每個學生的名稱命名,分別為wang和chen,每個學生下麵包含名為week的成績結構數組。
現計算給定結構名稱、學生名稱和起止周數的平均分數。
在命令窗口中輸入editavgscore.m,輸入以下代碼後保存文件:
functionavg=avgscore(struct,student,first,last)
avg=sum(struct.(student).week(first:last))/(last-first+1);
在命名窗口中輸入:avgscore(testscores,'chen',7,22)計算學生陳從第7周到第22周的平均分數。
添加和刪除結構欄位
命令[struct](index).(field)可添加或修改欄位。如patient(2).ssn='000-00-0000'在結構patient中添加一個名為ssn的欄位。
刪除欄位使用rmfield函數,如patient2=rmfield(patient,'name')刪除name欄位並產生新的結構。
單元格數組
單元格數組提供了不同類型數據的存儲機制,可以儲存任意類型和任意緯度的數組。
訪問單元格數組的規則和其他數組相同,區別在於需要使用花括弧{}訪問,例如A{2,5}訪問單元格數組A中的第2行第5列單元格。
構建單元格數組:賦值方法
使用花括弧標識可直接創建單元格數組,如:
A(1,1)={[143;058;729]};
A(1,2)={'abcd'};
A(2,1)={3+7i};
A(2,2)={-pi:pi/10:pi};
上述命令創建2*2的單元格數組A。繼續添加單元格元素直接使用賦值如A(2,3)={5}即可,注意需使用花括弧標識。簡化的方法是結合使用花括弧(單元格數組)和方括弧()創建,如C={[12],[34];[56],[78]};
構建單元格數組:函數方法
Cell函數。如:
B=cell(2,3);
B(1,3)={1:3};
訪問數據
通過索引可直接訪問單元格數組中的數據元素,例如:
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)
函數句柄
函數句柄是用於間接調用一個函數的Matlab值或數據類型。在調用其它函數時可以傳遞函數句柄,也可在數據結構中保存函數句柄備用。通過命令形式fhandle=@functionname可以創建函數句柄,例如trigFun=@sin,或匿名函數sqr=@(x)x.^2;。
使用句柄調用函數的形式是fhandle(arg1,arg2,...,argn)或fhandle()(無參數)。如:
trigFun(1)。例:
functionx=plotFHandle(fhandle,data)
plot(data,fhandle(data))
plotFHandle(@sin,-pi:0.01:pi)
H. matlab 數據顯示格式
如果以短整式顯示(默認),則為如下:
>> x = 1215.678978234756;
>> format;x
可以看到,數據顯示時以科學計數法顯示為: x = 1.2157e+03
說明:在數據計算與顯示輸出時,常需要控制數據顯示格式,matlab默認的數據顯示格式是短整式(short),當數據為實數時,以小數點後4位的長度顯示;當數據為整數時則以整數顯示。數據顯示格式以format指令控制。
如果要以長格式(long)顯示,那麼可以輸入如下指令:
>> format long;x
回車後輸出如下: x = 1.215678978234756e+03
如果需要短緊縮格式,也就是我們習慣的書寫格式,可採用如下指令:
>> format short g;x
輸出數據如下: x = 1215.7
當然,也可以採用有理格式顯示(近似分數)
指令:
>> format rational;x
輸出: x = 34039/28
需要知道的是,數據顯示格式,並不會影響數據的實際數值大小,不會影響計算的精度,在計算過程中matlab是以約16位有效數字的。
I. matlab中數組如何輸出數據格式為分數
matlab中format option可以設置結果的顯示形式為option指定的樣式,輸出數據格式為分數則可以使用:
formatrat
示例如下:
>> A = [2,0.2,0.3,0.123466]
A = 2.0000 0.2000 0.3000 0.1235
>> format rat
>> A
A = 2 1/5 3/10 332/2689