­

matlab 基礎

安裝

參考:鏈接

學習:參考鏈接

常量

 注意:MATLAB中的常量是可以重新賦值的,但不建議重新賦值

 

變數

以字母開頭,字母、數字和下劃線的組合,且區分大小寫

變數類型:數值型、符號型、字元串型、其他(多維數組、單元數組、類和對象)

ans :系統變數,存放最近一次的結果

基本運算

加(+)、減(-)、乘(*)、除(/)、乘方(^)

基本函數

三角函數

對數&平方

format long  :以長格式顯示

format short  :以短格式顯示

虛數&取整

使用技巧

help  函數名

命令框中顯示

doc  函數名

彈出窗口顯示

clc

清屏,但不清變數

clear  (變數名)

清屏,且清變數(可以指定變數)

歷史命令

找布局

是否顯示運算結果

是否加分號

命令補全

tab鍵

腳本文件

寫完點 – 運行

中斷運行

Ctrl+C

注釋&解釋 程式

% :加在前面是注釋單行,加在後面是解釋單行

Ctrl+R :一段程式加註釋

Ctrl+T:一段程式解除注釋

%% :將程式分為兩節

關閉所有的繪圖窗口

close all

矩陣

矩陣的輸入

用括弧[ ] 建立矩陣,在一行內個數值之間可用空格或者逗號隔開,而行與行之間則用分號隔開

例如:

向量的輸入:

向量可以看成特殊的矩陣,行向量和列向量輸出時:

冒號表達式:

生成等間距行向量:v = s1:s2:s3

表示:以s1為起始值,s2為步長,每隔一個s2取一個值,直至不超過s3 的最大值,生成一個行向量,預設s2 的值為1

linspace 

生成等間距行向量

linspace(a,b,n) :生成的向量是以a為第一個值,b為最後一個值,等間距生成n個值,與 a:(b-a)/n-1:b 等價

特殊矩陣的輸入

矩陣元素的訪問

A( 要訪問的行,要訪問的列)

例如:

矩陣元素的重新賦值

首先要提取需要賦值的部分,然後用相同位數的新矩陣對其重新賦值即可

舉例:

矩陣的基本運算

 

常用函數

返回行數和列數: 

size(a,1):返回a的行數

size(a,2):返回a的列數

其他函數:

 

 

在圖片處理中的應用

1、影像文件的讀/寫

imread :函數用來實現影像文件的讀取

imshow:函數來顯示影像

imwrite:函數用來實現影像文件的寫入

imfinfo:函數用來查詢影像文件資訊

補充:

MATLAB 中的基本數據結構是由一組有序的實數或複數元素構成的數組,同樣地,影像
對象的表達採用的是一組有序的灰度或彩色數據元素構成的實值數組。MATLAB 中通常用二
維數組來存儲影像,數組的每個元素對應於影像的一個像素值。例如,由 200 行和 300 列的
不同顏色點組成的一幅影像在 MATLAB 中採用 200*300 的矩陣存儲

1、影像的表示

一幅影像可以被定義為一個二維函數 f(x,y),其中 x 和 y 是空間(平面)坐標,f 在任何
坐標處(x,y)處的振幅稱為影像在該點的亮度

灰度是用來表示黑白影像亮度,0 代表純黑,255代表純白,而
彩色影像是由單個二維影像組合形成的。例如,在 RGB 彩色系統中,一幅彩色影像是由三
幅獨立的分量影像(紅、綠、藍)組成的。因此,許多為黑白影像處理開發的技術適用於彩
色影像處理,方法是分別處理三幅獨立的分量影像即可。
影像關於 x 和 y 坐標以及振幅連續。要將這樣的一幅影像轉化為數字形式,就要求數字
化坐標和振幅。將坐標值數字化成為取樣;將振幅數字化成為量化。取樣和量化的過程如圖
所示。因此,當 f 的 x、y 分量和振幅都是有限且離散的量時,稱該影像為數字影像。

2、影像分類

根據影像數據矩陣解釋方法的不同,MATLAB 把其處理為 4 類:

亮度影像(Intensity images)

一幅亮度影像是一個數據矩陣,其歸一化的取值表示亮度。若亮度影像的像素都是 uint8
類或 uint16 類,則它們的整數值範圍分別是[0 255]和[0 65536]。若影像的像素是 double 類,
則像素取值就是浮點數。規定雙精度型歸一化亮度影像的取值範圍是[0 1]

二值影像(Binary images)

一幅二值影像是一個取值只有 0 和 1 的邏輯數組。而一幅取值只包含 0 和 1 的 uint8 類
數組,在 MATLAB 中並不認為是二值影像。使用 logical 函數可以把數值數組轉化為二值數
組或邏輯數組。創建一個邏輯影像,其語法為:
B=logical(A)
其中,B 是由 0 和 1 構成的數值數組。
要測試一個數組是否為邏輯數組,可以使用函數:
islogical(c)
若 C 是邏輯數組,則該函數返回 1;否則,返回 0。

索引影像(Indexed images)

索引顏色通常也稱為映射顏色,在這種模式下,顏色都是預先定義的,並且可供選用的
一組顏色也很有限,索引顏色的影像最多只能顯示 256 種顏色。
一幅索引顏色影像在影像文件里定義,當打開該文件時,構成該影像具體顏色的索引值
就被讀入程式里,然後根據索引值找到最終的顏色。

RGB 影像(RGB images)

一幅 RGB 影像就是彩色像素的一個 M×N×3 數組,其中每一個彩色相似點都是在特定
空間位置的彩色影像相對應的紅、綠、藍三個分量。按照慣例,形成一幅 RGB 彩色影像的
三個影像常稱為紅、綠或藍分量影像。
令 fR,fG 和 fB 分別代表三種 RGB 分量影像。一幅 RGB 影像就利用 cat(級聯)操作
將這些分量影像組合成彩色影像:
rgb_image=cat(3,fR,fG,fB)
在操作中,影像按順序放置。

例如:

雙清:
clear;
clc;
讀入圖片:
a = imread("h.jpg");
b = imread("g.jpg");
顯示圖片:
imshow(a)
imshow(b)
讀取圖片資訊:
imfinfo("h.jpg") 

2、影像和數據間的轉化

數據類型:

格式轉換函數:

rgp2gray:將RGP圖片轉換成灰度圖片

將RGP圖片轉換成灰度圖片:
A = rgb2gray(a);
B = rgb2gray(b);
imshow(A);
imshow(B);

3、圖片處理

旋轉

rot90(a) :圖片逆時針旋轉90度

rot90(a,-1):圖片順時針旋轉90度

rot(a,2):圖片逆時針旋轉180度

將圖片旋轉:
imshow(rot90(a))
imshow(rot90(a,-1))
imshow(rot90(a,2))
imshow(rot90(a,-2))

翻轉

fliplr(a):圖片左右翻轉

flipud(a):圖片上下翻轉

例如:

將圖片翻轉:
imshow(fliplr(a))
imshow(flipud(a)) 

壓縮

a(1:2:end,1:2:end):矩陣的行和列每隔一行取一個,實現壓縮四倍

例如:

圖片壓縮:
imshow(a(1:2:end,1:2:end));

剪裁

a(橫坐標,縱坐標) 

補充:

Figure  – 數據游標  工具,查看圖片某一點的坐標

如題:該點的橫坐標為57,縱坐標為177 

例如:

圖片剪裁:
imshow(a(49:89,174:241));

合併

例如:

圖片剪裁:
B = b;
c = a(49:89,174:241);
[a1,b1] = size(B);
[a2,b2] = size(c);

c(c<200) = 0; % 將c中小於200的像素賦值為0
imshow(c);
B(1:a2,b1-b2+1:b1) = c;
imshow(B)

局部馬賽克

原理:用局部像素的均值來代替該區域的像素值

例如:

局部馬賽克:
bb = b;
for i = 28:101
    for j = 81:154
        bb(i,j) = mean(mean(b(i:i+100,j:j+100)));% mean(b(i:i+100,j:j+100)):得出的是一個行向量,原方陣的每列的均值
    end
end
imshow(bb)

繪圖

Matlab繪圖原理:

先根據橫縱坐標描點,然後將相鄰的兩個點用直線相連

二維圖繪製

figure :新建繪圖窗口

plot(x,y):x和y為長度相同的向量,分別存儲x坐標和y坐標數據

1、直角坐標系下顯函數繪圖

例如:

clc;
clear;
figure;
x = 0 : pi / 10 : 2 * pi;% 冒號表達式:從0開始,每隔pi/100,取一個值,直到2 * pi,生成一個行向量
y = 2 * exp(-0.5 * x ) .* cos(4 * pi * x );%兩個向量之間用點乘
plot(x,y);

2、 直角坐標系下參數方程所確定函數的繪圖

例如:

clc;
clear;
figure;
t = 0 : 0.01 : 0.2;
x = t;
y = t - 1/2 * 9.8 * t.^2;
plot(x,y);

3、極坐標系下繪圖

polar(theta,rho)   theta:極角  rho:極徑、

polarplot – 在極坐標中繪製線條,polar – (不推薦)極坐標圖

例如:

 

clc;
clear;
theta = 0 : 0.01 :6 * pi;
rho = 5 * sin ( 4 * theta / 3 );
polar(theta,rho)
% polarplot(theta,rho) 也可以 
% polarplot - 在極坐標中繪製線條,polar - (不推薦)極坐標圖

4、直角坐標系下隱函數繪圖

(1)對於函數f = f(x) ,ezplot函數的調用格式為:

ezplot(f):在默認區間 -2 π < x < 2π,繪製 f 的圖形

ezplot(f, [a,b]):在默認區間 a< x < b,繪製 f 的圖形

ezplot – (不推薦)易用的函數繪圖函數 

例如:

ezplot("cos(x)")
%fplot(@(x)cos(x))% fplot("cos(x)"):fplot 將不接受字元向量或字元串輸入

Additional Information:
If the expression you are plotting uses the assignment operator (=), the equality relation operator (==), or more than 1 variable, use the fimplicit function instead of ezplot. Otherwise, use fplot instead of ezplot.
Both fplot and fimplicit require that the input function to plot is a function handle. The ezplot function accepted either a function handle or character vector.
For example, use fplot(@(x) sin(x.^2)) instead of ezplot(‘sin(x^2)’) or fimplicit(@(x,y) sin(x)-cos(y)) instead of ezplot(‘sin(x)=cos(y)’).


如果要繪製的表達式使用賦值運算符(=),相等關係運算符(==)或多個變數,請使用fimplicit函數而不是ezplot。 否則,請使用fplot而不是ezplot。
fplot和fimplicit都要求要繪製的輸入函數是函數句柄。 ezplot函數接受函數句柄或字元向量。
例如,使用fplot(@(x)sin(x。^ 2))而不是ezplot(’sin(x ^ 2)’)或fimplicit(@(x,y)sin(x)-cos(y)) 而不是ezplot(’sin(x)= cos(y)’)。

(2)對於隱函數 f  = f ( x ,y )

ezplot(f):在默認區間 -2 π < x < 2π 和 -2 π < y < 2π,繪製 f (x, y ) =0 的圖形

ezplot(f, [xmin,xmax ,ymin,ymax]):在默認區間 xmin < x < xmax  和 ymin < y < ymax,繪製 f (x, y ) =0 的圖形

ezplot(f, [a,b]):在默認區間 a< x < b 和 a< y < b,繪製 f (x, y ) =0 的圖形

ezplot('x^3 + y^3 - 5*x*y + 1/5',[-5 5 -4 4])

(3)對於x = x(t) 和 y = y(t)

ezplot(x,y):在默認區間 -2 π < t < 2π,繪製x = x(t) 和 y = y(t)的圖形

ezplot(x,y, [tmin,tmax]):在默認區間 tmin < t < tmax ,繪製x = x(t) 和 y = y(t)的圖形

ezplot('8*cos(t)','4*sqrt(2)*sin(t)')

二維圖修飾 

1、線的修飾

plot(x,y,LineSpec) :利用繪圖參數Linespec 來設置線型、節點類型和顏色

例如:

clc;
clear;
figure;
x = 0 : pi / 100 : 2 * pi;% 冒號表達式:從0開始,每隔pi/100,取一個值,直到2 * pi,生成一個行向量
y = 2 * exp(-0.5 * x ) .* cos(4 * pi * x );%兩個向量之間用點乘
plot(x,y,'r*-');  % 線型為實線、顏色為紅色、節點類型為*

 

 

plot(x,y,屬性1,屬性1的值,屬性2,屬性2的值……) :修改LineStyle 來設置線型、Marker 節點類型、Color顏色、線寬LineWidth

clc;
clear;
figure;
x = 0 : pi / 100 : 2 * pi;% 冒號表達式:從0開始,每隔pi/100,取一個值,直到2 * pi,生成一個行向量
y = 2 * exp(-0.5 * x ) .* cos(4 * pi * x );%兩個向量之間用點乘
plot(x,y,'colo','c','LineStyle',':','Marker','<','LineWidth','3');  % 線型為:、顏色為綠色、節點類型為<、線寬為2

2、圖的修飾

(1)圖標題:title(‘圖的標題’)

(2)x軸標籤:xlabel(‘x軸名稱’)    y軸標籤:ylabel(‘y軸名稱’)

(3)圖例:legend(‘曲線1名稱’,’曲線2名稱’,….)

(4)色條:colorbar;  顯示色條, colorbar(off);關閉色條  ,主要用於三維圖

(5)grid on ; 開網格  ,grid off ;關網格

(6)axis([a b c d]) 設定坐標上下界,a<x<b,c<y<d

例如:

clc;
clear;
figure;
x = -2*pi : pi/100 : 2*pi;
y = cos(x);
plot(x,y)
title('y = cos(x)');
xlabel('x軸');
ylabel('y軸');
colorbar;
grid on;
axis([-6,6,-1,1]);

(7)hold on  :重新生成另外一個影像

一張畫布上生成多個影像:

第一種方法:

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
y2 = cos(x);
plot(x,y1,'ro-',x,y2,'g+:');  % 放到一個figure中

第二種方法:

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
plot(x,y1,'ro-'); 
hold on;
y2 = cos(x);
plot(x,y2,'g+:'); 
hold on;
y3 = sqrt(x);
plot(x,y3,'b>-'); 

加上legend:

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
plot(x,y1,'ro-'); 
hold on;
y2 = cos(x);
plot(x,y2,'g+:'); 
hold on;
y3 = sqrt(x);
plot(x,y3,'b>-'); 
legend("sin(x)","cos(x)","sqrt(x)");

 

(8)subplot (m,n,p) :將圖形窗口分為m*n個繪圖區,即m行,n列,區號按行優先編號,選定第p個區為當前活動區,每個繪圖區單獨繪製圖形 。

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = sqrt(x);
y4 = x;
subplot(2,2,1),plot(x,y1,'ro-'); 
subplot(2,2,2),plot(x,y2,'g+:'); 
subplot(2,2,3),plot(x,y3,'b>-'); 
subplot(2,2,4),plot(x,y4,'c<-.'); 

特殊情況:

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = sqrt(x);
subplot(2,2,1),plot(x,y1,'ro-'); 
subplot(2,2,2),plot(x,y2,'g+:'); 
subplot(2,1,2),plot(x,y3,'b>-');

clc;
clear;
figure;
x = 0:pi / 10 :2*pi;
y1 = sin(x);
y2 = cos(x);
y3 = sqrt(x);
subplot(1,2,1),plot(x,y1,'ro-'); 
subplot(2,2,2),plot(x,y2,'g+:'); 
subplot(2,2,4),plot(x,y3,'b>-');

三維圖表示

plot3(x1,y1,z1,選項1,…….)  :三維圖的繪製

例如:

 

clc;
clear;
figure;
t = 0:pi/100:20*pi;
x = sin(t);
y = cos(t);
z = t .* sin(t) .* cos(t);
plot3(x,y,z);

三維曲面的繪製

已知二元函數 z = f (x,y)

1、[x,y] = meshgrid(v1,v2) :生成網格數據,其中v1與v2為x軸與y軸的分割方式

2、z = f(x,y):計算z

3、mesh(x,y,z):繪製網格圖

4、surf(x,y,z):繪製表面圖

5、surfl(x,y,z):光照下的二維曲面

6、waterfall(z,y,z):瀑布型三維圖形

例如:

clc;
clear;
figure;
[x,y] = meshgrid(-10:10);
z = 1./(1 + (x .^2 + y .^2) .^2 / 200);
mesh(x,y,z);

clc;
clear;
figure;
[x,y] = meshgrid(-10:0.2:10);
z = 1./(1 + (x .^2 + y .^2) .^2 / 200);
surf(x,y,z);

[x,y] = meshgrid(-10:0.2:10);
z = 1./(1 + (x .^2 + y .^2) .^2 / 200);
surfl(x,y,z);

[x,y] = meshgrid(-10:0.2:10);
z = 1./(1 + (x .^2 + y .^2) .^2 / 200);
waterfall(x,y,z);

 MATLAB 還可以繪製其他很多圖形,例如:直方圖、散點圖、柱狀圖、餅圖、登高線圖、熱圖等

可以輸入:查看圖形種類以及相關使用方法

doc type of Matlab plots    

自定義函數

1、在MATLAB中新建腳本文件

2、函數格式:

function [輸出變數列表] = 函數名 (輸入變數1,輸入變數2,…..)

              根據輸入變數計算各個輸出變數

end

3、保存腳本,腳本名字必須函數名

4、在其他程式中調用此函數,調用格式為:

  [輸出變數列表] = 函數名(輸入變數1,輸入變數2,……..)

舉例

%myfun.m
function [outputArg1,outputArg2,outputArg3] = myfun(inputArg1,inputArg2)
% 根據輸入的兩個同形矩陣A和B,分別計算A+B、A-B、A.*B
outputArg1 = inputArg1 + inputArg2;
outputArg2 = inputArg1 - inputArg2;
outputArg3 = inputArg1 .* inputArg2;
end
>> A1 = [1,2,3;4,5,6];
>> A2 = [7,8,9;6,4,3];
>> [a,b,c] = myfun(A1,A2);

循環

for 

語法:

for  i = V

  循環結構體

end

注釋: i是循環變數,V是一個向量,i在V中不斷地取值,每取一個值就執行一次循環體的內容  

例1:

clc;
clear;
s = 0;
for i =1 : 100;
    s = s + 1 / i;
end

例2:  

clc;
clear;
s = 0;
for i =1 : 2 : 100;
    s = s + 1 / i;
end

例3:

clc;
clear;
s = 0;
for i = [2,3,5,7,11,13,17,19];
    s = s + 1 / i;
end

while

語法:

while (條件)

  循環結構體

end

註:條件是一個邏輯表達式,放棄值為真時,執行結構體,直到其值為假時結束  

 例1:

clc;
clear;
s = 0;
i = 0;
while s <= 100
    i = i + 1;
    s = s + i;  
end 

 

選擇

if

語法1:

if 條件

  命令組1

else

  命令組2

end

註:當條件滿足執行命令組1,當條件不滿足時執行命令組2  

語法2:

if 條件1

  命令組1

elseif  條件2

  命令組2

..........

else

  命令組n

end

語法3:  

if 條件
  命令組1
end

註:當條件滿足執行命令組1時,當條件不滿足時什麼都不執行

例1:

 

clc;
clear;
d = input('請輸入分數:');% 輸入函數
if d >= 60
    out = 1;
else
    out = 0;
end 

例2:

clc;
clear;
d = input('請輸入分數:');
if d >= 90
    disp('優');
elseif d >= 80
    disp('良');
elseif d >= 70
    disp('中');
elseif d >= 70;
    disp('及格');
else
    disp('差');
end

例3:

clc;
clear;
d = input('請輸入分數:');
if d >= 90
    disp('優');
end
if d >= 80 && d < 90
    disp('良');
end
if d >= 70 && d < 80
    disp('中');
end
if d >= 60  && d < 70
    disp('及格');
end
if d < 60
    disp('差');
end

switch

語法:

switch 表達式

case  表達式1

  語句組1

case  表達式2

  語句組2

.........

case 表達式n 

  語句組n

otherwise 

  語句組n+1

end

註:表達式必須是標量和一個字元串:當表達式與表達式1相同時,運行語句1,當表達式與表達式2相同時,運行語句2,以此類推。當與所有的表達式都不同時,運行語句n+1

例1:

clc;
clear;
d = input('請輸入分數:');
ava = fix(d / 10);% 取整,只保留整數部分
switch ava
    case {9,10}
        disp('優');
    case 8
        disp('良');
    case 7
        disp('中');
    case 6
        disp('及格');
    otherwise
        disp('差');
end

例2:

clc;
clear;
price = input('請輸入價格:');
ava = fix( price / 100);% 取整,只保留整數部分
switch ava
    case {0,1} % 價格小於200
        rate = 0;
    case {2,3,4}  % 價格大於200小於500
        rate = 3 / 100;
    case num2cell(5:9) % 價格大於等於500小於1000 ,num2cell :將矩陣裝換成數字
        rate = 5 / 100;
    case num2cell(10:49) % 價格大於等於1000小於5000
        rate = 8 / 100;
    otherwise
        rate = 10 / 100;
end
price = price*(1 - rate);
disp(price);  % 輸出商品實際價格

中斷

break

跳出循環體,但只能跳出一層循環,當有多層循環時,只能跳出包含break的最內層循環 

continue

終止當次循環中餘下的語句,機型下一次循環

return

所有餘下命令均不執行,終止程式

例1:

clc;
clear;
A = [1,-4,8,-3,9];
n = length(A);
for i = 1:n
    if A(i) >= 0
        continue;
    end
    i,A(i)
end
s = sum(A)
i =

     2


ans =

    -4


i =

     4


ans =

    -3


s =

    11
clc;
clear;
A = [1,-4,8,-3,9];
n = length(A);
for i = 1:n
    if A(i) < 0
        break;
    end
    i,A(i)
end
s = sum(A)
i =

     1


ans =

     1


s =

    11
clc;
clear;
A = [1,-4,8,-3,9];
n = length(A);
for i = 1:n
    if A(i) > 8
        return;
    end
    i,A(i)
end
s = sum(A)
i =

     1


ans =

     1


i =

     2


ans =

    -4


i =

     3


ans =

     8


i =

     4


ans =

    -3

例2:

clc;
clear;
A = [1,-4,8;-3,9,1;-1,-2,3];
[m,n] = size(A);
flag = 0;
for i = 1 : m
    for j = 1 : n
        if A(i,j) < 0
            i,j,A(i,j)
            flag = 1;
            break;
        end
    end
    if flag == 1
        break;
    end
end
s = A'
i =

     1


j =

     2


ans =

    -4


s =

     1    -3    -1
    -4     9    -2
     8     1     3

元胞數組

介紹

1、元胞數組是matlab中的一種特殊數據類型

2、可以看做一種無所不包的通用矩陣,元胞數組中的元素稱為元胞或者單元,可以是任何一種數據類型的數據

3、元胞數組中的每一個元素可以具有不同的尺寸。可以佔用不同的記憶體空間

4、元胞數組的記憶體空間可以動態分配

創建

1、直接賦值

1.1 內容索引

左邊{} ,右邊為內容

A{1,1} = "hello pam";

1.2 單元索引

左邊(), 右邊{內容}

A(1,2) = {11};

2、使用cell創建

C = cell(2,2);

3、使用{}直接創建所有的元胞數組的所有單元

D = {"pam",[1,2,3;4,5,6],11};  

訪問

1、用()將下標括起來訪問其單元的大小和數據類型

>> D = {"pam",[1,2,3;4,5,6],11};
>> D(1,2)

ans =

  1×1 cell 數組

    {2×3 double}

2、用{}將下標括起訪問其單元內容

>> D{1,2}

ans =

     1     2     3
     4     5     6

3、用celldisp()對其元胞數組的所有內容進行訪問

>> celldisp(D)
 
D{1} =
 
pam
 
 
D{2} =
 
     1     2     3
     4     5     6

 
 
D{3} =
 
    11

刪除

1、使用{}

刪除其中的一個元素

>> D{1,1} = []

D =

  1×3 cell 數組

    {0×0 double}    {2×3 double}    {[11]}

>> D{1,1}

ans =

     []

2、使用()

2.1 刪除部分

>> C(:,1) = []   % 刪除一列

C =

  2×1 cell 數組

    {0×0 double}
    {0×0 double}

2.2 刪除全部

>> A(:) = [] % 刪除全部

A =

  空的 0×0 cell 數組

相關函數  

1、celldisp  :顯示元胞數組中所有的內容

2、cell:創建空的元胞數組

3、cellplot:利用圖形方式顯示內容

4、cell2mat:將數組轉變為普通的矩陣

5、mat2cell:將數組矩陣轉變成為cell數組

6、num2cell:將數值數組轉變成cell數組

7、iscell:判斷輸入是否為cell數組 

Excel的讀寫

格式:

[num,txt,raw] = xlsread(filename,sheet,xlRange)

filename:文件名字,單引號括起

sheet:工作變得名字或者編號,例如:sheet1,或者1

xlRange:工作表中的指定區域,例如:A2:D5

num:存儲工作表中的數值數據,為一個矩陣

txt:存儲工作表中的文本數據,為一個元胞數組

raw:存儲工作表中的數值數據和文本數據,為一個元胞數組

注釋:txt和raw可以預設,sheet和xlRange可以預設

[num,txt,raw] = xlsread('111.xls','Sheet1','A3:K668');

 

寫  

語法:

xlswrite(filename,A,sheet,xlRange)

注意:寫入Excel時,被寫入的文件不能被打開,否則會出現錯誤提示「不可寫」

>> s = sum(num(:,3:5))  %計算表中第三列到第五列數據的總和,並寫入最後一行對應的列中

s =

   1.0e+05 *

    2.2416    0.5446    0.5839

>> xlswrite('111.xls',s,'Sheet1','E669:G669')

畫中畫

效果

程式碼

clc;
clear;
% 繪製原圖
x = 0:0.05:20;
y = exp(-0.5*x).*sin(10*x);
x1 = 8:0.05:10;
y1 = exp(-0.5*x1).*sin(10*x1);
plot(x,y);
%繪製小矩陣
a = 8; % 矩陣的左下角x軸最小
b = min(y1); % 矩陣的左下角y軸最小
c = 2; % 矩陣的長度
d = max(y1) - min(y1); %矩陣的高
rectangle('Position',[a,b,c,d]);
%繪製坐標系
axes('Position',[0.5,0.6,0.3,0.3]); %在當前圖窗中創建默認的笛卡爾坐標區,並將其設置為當前坐標區,將坐標系的左下角作為(0,0),橫縱坐標各為1
% 繪製小圖
plot(x1,y1);

注釋:

1、axes(‘Position’,[x1,y1,x2,y2])

在當前圖窗中創建默認的笛卡爾坐標區,並將其設置為當前坐標區。通常情況下,您不需要在繪圖之前創建坐標區,因為如果不存在坐標區,圖形函數會在繪圖時自動創建坐標區。

2、rectangle(‘Position’,[a,b,c,d])

此 MATLAB 函數 在二維坐標中創建一個矩形。將 pos 指定為 [x y w h] 形式的四元素向量(以數據單位表示)。x 和 y 元素確定位置,w 和 h 元素確定大小。函數在當前坐標區中繪製圖形,而不清除坐標區中的現有內容。

  

Tags: