matlab學習(一)—— 基礎知識

數據類型

%% 1.數據類型
%15種數據
%8種整型:int8,int16,int32,int64,uint8,uint16,uint32,uint64(分別佔1、2、4、8字節)
%單精度浮點型single,雙精度浮點型double(默認),(分別佔4,8字節)
%邏輯型logical,字符串型char
%單元數組型cell,結構體型struct,函數句柄型function_handle
a1 = int8(6);
a2 = int16(-20);
a3 = int32(100);
a4 = int64(200);
b1 = single(3.5);
b2 = 12;
c1 = true;
c2{1,1} = 100;
c3 = 'hello';
c4.name = 'yang';
d = @cos;

數值類型

%% 1.1數值類型
% 1.1.1整數
%(1)類型轉換:
clear
a = 20
b1=int8(a)
b2=int16(a)
c='hello'
int8(c)
%(2)取整函數
% round 非符號部分四捨五入, fix  向0取整, floor 下取整, ceil 上取整
clear
a1=round(-1.2)
b1=fix(-1.2)
b2=fix(-1.9)
b3=fix(1.9)
c1=floor(-1.2)
d1=ceil(-1.2)

% 1.1.2浮點數
clc,clear
[realmin('single'),realmax('single')]
[realmin('double'),realmax('double')]

% 1.1.3複數
%(1)創建
clc,clear
a1=3+4i
a2=3+4j
a3=complex(3,4)
%(2)常用函數
% complex(a,b) 創建複數,real(z) 返回實部,imag(z) 返回虛部
% abs(z) 求模,angle(z) 求角度, conj(z) 求共軛複數
clc,clear
z1=3+4i
[real(z1),imag(z1)]
[abs(z1),angle(z1)]
z2=conj(z1)
z3=complex(1:3,3:5)
real(z3)
imag(z3)

% 1.1.4數據顯示格式format()
%format short 或 format('short') 默認,保留小數點後4位
%format long 或 format('long') 有效數字16位
%format long e 有效數字16位加3位指數
%format short e 有效數字5位加3位小數
%format bank 或 format('bank') 保留兩位小數位
%format + 或 format('+') 只給出正、負
%format rational 或 format('rational') 以分數形式表示
%format hex 或 format('hex') 16進制
%format long g 15位有效數
%format short g 5位有效數
clc,clear
format short
a = 12.345678
format long
a
format long e
a
format short e
a
format bank
a
format +
a
format rational
a
format hex
a
format short

邏輯類型

%% 1.2 邏輯類型
% 1 true 邏輯真, 0 false 邏輯假
clc,clear
a1=true
a2=false
a3=true(3,4)
a4=false(3)
% logical()可將非0數值轉換爲真,數值0轉換爲假(均佔1字節)
clc,clear
a=3
logical(a)
b=0
logical(b)
c=[1.3 -3 0;2 0 4;0.001 9 1]
logical(c)

字符和字符串

%% 1.3 字符和字符串
% 字符和字符串不進行區分均由''括起來,每個字符佔兩個存儲空間
clc,clear
a='My name is 楊'
b=char([65 66 67 68])
c=int8('hello')
d='楊'

函數句柄

%% 1.4 函數句柄
% 創建:@ 函數名/命令
clc,clear
a=@cos
a(10)
% 函數句柄常用函數
% fun2str(fhandle) 函數句柄轉字符串
% str2fun(str) 字符串轉函數句柄
% functions(fhandle) 返回包含函數信息的結構體變量
% isa(a,'function_handle') 判斷是否爲函數句柄
% isequal(fhandle1,fhandle2) 檢測兩個函數句柄是否對應同一函數
clc,clear
f1=@cos
t=0:pi/5:pi
f1(t)
f2=@complex
f2(3,4)
clc,clear
f1=@char
s1=func2str(f1)
f2=str2func(s1)
functions(f1)
isa(f1,'function_handle')
isequal(f1,f2)

單元數組類型

%% 1.5 單元數組類型
% 1.建立:{},cell(),num2cell()
% 判斷iscell()
clc,clear
c1={'中國','China';[1 2 3 4 5],100}       %{}創建
c1{1,1}
c1{2,1}
c1{2,2}=[]
c2=cell(2,3)                               %cell()創建
c2{1,1}=[1:3;3:5]
c2{2,2}='China'
c2{2,3}='Rosy'
c2{2,1}=100
a=[2.3 4.5 -1;2 3 4]
iscell(a)
c3=num2cell(a)                          %num2cell()矩陣轉單元數組
iscell(c3)
% 2.顯示
clc,clear
c={eye(2),'China';[1:4],100}
celldisp(c)             % cellisp() 
celldisp(c,'mycell')
out=cellplot(c,'legend')         % cellplot() 以彩色圖形顯示
% 3.添加刪除元素
clc,clear
c={'中國','China';[1:4],100}
c{2,4}=100
c(1,:)              %第一行元素
c(:,3)=[]           %刪除第三列
d={'北京','Beijing';[],3}
e=[c,d]             %單元數組合並
e(2,:)=[]           %刪除第二行
% 4. cell2struct()
clc,clear
c={'Dr.Yang',1.80,20200322,[80,90,96]}
fields={'name','height','num','score'}
s=cell2struct(c,fields,2)

結構體類型

%% 1.6 結構體類型
% sttuct() 產生結構體變量
% getfield() 獲得結構體成員變量的值
% setfield() 給結構體的成員變量設置新值
% rmfield() 刪除結構體中的成員變量
% isstruct() 判斷是否爲結構體變量
% isfield() 判斷是否爲結構體變量的成員變量
% fieldnames() 獲得結構體成員變量名字
% substruct() 子結構體
% orderfields(S) 按照成員變量的字幕順序排序
% struct2cell() 結構體轉元胞數組
clc,clear
stu(1).name='yang'      %直接輸入建立結構體
stu(1).age=21
stu(1).gender='Male'
stu(2)=struct('name',{'yung'},'age',{22},'gender',{'Female'})       %struct()創建

getfield(stu(1),'name')     %獲取成員變量值

setfield(stu(1),'name','ya')        %修改成員變量值(不存在時,加入新成員變量)
setfield(stu(1),'newfield',1)

s1 = rmfield(stu,'gender')      %刪除一個成員變量
s2 = rmfield(stu,{'age','gender'})      %刪除多個成員變量

isstruct(stu)       %判斷是否爲結構體
isfield(stu,'name')     %判斷是否爲成員變量
isfield(stu,{'name','age','Age'})

fieldnames(stu)     %返回結構體成員變量數組
orderfields(stu)    %按字符順序將結構體變量的成員變量排序

c=struct2cell(stu)      %結構體變量轉元胞數組

運算符

%% 2 運算符
% 2.1算術運算:+, -, *, /, \, ^, '    前面加 . 以元素爲基本單位運算,不加以矩陣爲單位運算
% 2.2關係運算:<,  <=, >,  >=, ==, ~=
%    函數: lt, le, gt, ge, eq, ne   (注意判斷浮點數相等,差的絕對值小於一個特別小的數)
% 2.3邏輯運算:逐個元素的邏輯運算、
% (1)逐個元素的邏輯運算
%   & and, | or, ~ not, xor
clc,clear
A=rand(3,4)
B=A>0.6
C=A<0.4
d1=B&C
d2=B|C
d3=~B
d4=xor(B,C)

% (2)快速邏輯運算符:&&,||
% && 第一個爲假時,直接返回假
% || 第一個爲真時,直接返回真

% (3)逐位邏輯運算
% bitand(a,b) bitor(a,b) bitcmp(a,b) bitxor(a,b)
% 對二進制數逐位邏輯計算,並將結果轉換爲十進制數
clc,clear
a=20
b=23
c1=dec2bin(a)
c2=dec2bin(b)
d1=bitand(a,b)
d2=dec2bin(bitand(a,b))
d3=dec2bin(bitor(a,b))
d4=dec2bin(bitxor(a,b))
d5=dec2bin(bitcmp(a,'uint8'))

% 2.4 運算符的優先級
% 相同優先級,從左向右運算
% ()
% '  ^   .^
% +  -  ~   (一元加減)
% *  .*  /  ./  \  .\
% +  -
% :
% 關係運算符
% &
% |
% &&
% ||

日期和時間

%% 3 日期和時間
% calendar 返回日曆, clock 當前時間, date當前日期
% weekday 星期, now 當前日期和時間, ecomday 一個月的最後一天
% datevec 以向量顯示日期, datestr 以字符顯示日期, datenum 以數值顯示日期, datetick 指定座標軸的日期
% cputime 經過的cpu時間, etime 經過的時間
% tic 計時開始, toc 計時結束

% 3.1 獲取日期
clc,clear
c1=clock     %獲取當前日期,向量(年,月,日,時,分,秒)
d1=date      %獲取當前日期,日-月-年
n1=now       %獲取當前日期,雙精度表示

calendar        %顯示當月日曆
d2='28-Dec-2000'
calendar(d2)     %返回date的日曆
calendar(2000,12)   %返回2000年12月的日曆

a1,b1]=weekday(728647)       %返回星期的數字和字符串
[a2,b2]=weekday(d2)

eomday(2020,2)      %返回該月最後一天

% 3.2 日期格式轉換
% 提供了三種格式:雙精度日期、字符串、數值向量
% datenum(), datestr(), datevec()
clc,clear
d1=datestr(now)
d2=datestr(now,'dd-mm-yyyy')
d3=datestr(now,1)
d4=datestr(now,'HH:MM:SS')
d5=datestr(now,13)

% 3.3 計時函數
% tic啓動一個秒錶,toc暫停一個秒錶
clc,clear
tic
for i=5:12
    a=inv(pascal(i));
    t(i-4)=toc;
end
plot(5:12,t)
xlabel('階數')
ylabel('時間、秒')
% etime(t1,t0) 返回參數t1和t0之間的時間,單位秒
clc,clear
t=clock
for i=1:100000           %循環
    v(i)=exp(i);
end
t1=etime(clock,t)       %計時1
clear
t=clock;
i=1:100000;              %矢量
y(i)=exp(i);
t2=etime(clock,t)       %計時2
% cputime 返回從當前MAtlab啓動之後所用CPU時間,單位秒
clc,clear
t=cputime
i=1:1000000;
y(i)=exp(i);
t1=cputime-t

常量和變量

%% 4 常量和變量
% 4.1 常量
% INF,inf 表示無窮大,允許的最大的數爲2^1024
% ANS,ans 默認變量名,保存最後一次運算結果
% pi 圓周率
% NaN,nan 不定值0/0
% realmax 最大值的實數, realmin 最小值的實數
% eps 浮點數的相對誤差
% i,j 複數單位,-1的平方根
% nargin 函數的輸入參數個數,nargout 函數的輸出參數個數
% varargin 可變的輸入參數個數, varargout 可變的輸出參數個數
% beep 使計算機發出“嘟嘟”聲

% 4.2 變量命名規則
% (1)不超過31字符,超過的忽略不計
% (2)變量名區分大小寫,必須以字母開頭,可包含字母、數字、下劃線
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章