精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MATLAB基礎(chǔ)教程(xlsread和xlswrit函數(shù)+數(shù)據(jù)擬合+數(shù)值計(jì)算)

嵌入式職場(chǎng) ? 來源:數(shù)學(xué)建模CUMCM ? 2023-06-16 16:07 ? 次閱讀

1、xlsreadxlswrit函數(shù)

MATLAB中經(jīng)常會(huì)用到數(shù)據(jù)的讀取,首先是從Excel中讀取數(shù)據(jù)到MATLAB中去。下面給出原始Excel數(shù)據(jù)內(nèi)容:

c9345414-0c1b-11ee-962d-dac502259ad0.png

在MATLAB讀取結(jié)果如下:

m=xlsread('fanjufei.xls',1,'A1:C3')


m =


     1     2     3
     4     5     6
     7     8     9

其中xlsread可以直接從Excel中讀取文件,'fanjufei.xls'表示讀取文件的名稱,1表示位于sheet1;'A1:C3'表示讀取數(shù)據(jù)的范圍。

xlswrite函數(shù):

可以從MATLAB中寫入數(shù)據(jù)到Excel中去,下面給出要寫入數(shù)據(jù):

clear
clc
n=[1 2 3 4;5 6 7 8;9 10 11 12];
xlswrite('fanjufei.xls',n,3,'B2:E4')

c953a2b0-0c1b-11ee-962d-dac502259ad0.png

2、數(shù)據(jù)擬合

2.1 多項(xiàng)式擬合

例如:有兩組數(shù)據(jù)為x=[1 2 3 4 5 6 7 8 9];y=[9 7 6 3 -1 2 5 7 20];寫出x與y的表達(dá)式;

clear
clc
x=[1 2 3 4 5 6 7 8 9];
y=[9 7 6 3 -1 2 5 7 20];
P=polyfit(x,y,3);
xi=010;
yi=polyval(P,xi);
plot(xi,yi,x,y,'r*');

注釋:polyfit(x,y,N),x、y為原始數(shù)據(jù),N為擬合最高次冪,

c9644610-0c1b-11ee-962d-dac502259ad0.png

polyval(P,xi),P為各項(xiàng)的系數(shù),結(jié)果展示為:

P 0.148-1.403 1.85368.2698

故多項(xiàng)式的結(jié)果為:

c97da5f6-0c1b-11ee-962d-dac502259ad0.png

2.2工具箱擬合

打開工具→基本擬合,選定擬合的方式。

x=[1 2 3 4 5 6 7 8 9];
y=[9 7 6 3 -1 2 5 7 20];
plot(x,y,'r*');

得出結(jié)果如下:

c9903efa-0c1b-11ee-962d-dac502259ad0.png

2.3自定義擬合函數(shù)

例如:要擬合數(shù)據(jù):

c9aa7dd8-0c1b-11ee-962d-dac502259ad0.png

clear
clc
syms t
x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.08;0.032;-0.015;-0.02];
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
cfun=fit(x,y,f)
xi=020;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');

結(jié)果:

cfun = 


     General model:
     cfun(t) = a*cos(k*t)*exp(w*t)
     Coefficients (with 95% confidence bounds):
       a =      0.9987  (0.9836, 1.014)
       k =      -1.001  (-1.006, -0.9958)
       w =     -0.2066  (-0.2131, -0.2002)

c9b889e6-0c1b-11ee-962d-dac502259ad0.png

注釋:fittype是自定義擬合函數(shù),cfun=fit(x,y,f)擬合數(shù)據(jù)x、y,x、y必須為列向量。

故結(jié)果為:

c9dc3c88-0c1b-11ee-962d-dac502259ad0.png

3、數(shù)值計(jì)算

3.1多項(xiàng)式

(1)多項(xiàng)式表示方法

c9f3215a-0c1b-11ee-962d-dac502259ad0.png

(2)多項(xiàng)式的運(yùn)算

多項(xiàng)式乘除運(yùn)算

計(jì)算代碼:

clear 
clc


%多項(xiàng)式相乘conv
u=[2 4 5 6];%多項(xiàng)式
v=[10 20 30];%多項(xiàng)式
p=[1 2 3];%多項(xiàng)式
w=conv(u,v)  %conv為多項(xiàng)式相乘函數(shù),也可以嵌套使用;
m=conv(conv(u,p),v)  


%多項(xiàng)式相除deconv
[q,r]=deconv(w,v)%q為商,r為余數(shù);

結(jié)果:

w =


    20    80   190   280   270   180


m =


 20         120         410         900        1400        1560        1170         540


q =


     2     4     5     6


r =


     0     0     0     0     0     0

多項(xiàng)式的導(dǎo)函數(shù)

k=polyder(p),返回多項(xiàng)式p的導(dǎo)函數(shù);
k=polyder(a,b),返回多項(xiàng)式a乘以b的導(dǎo)函數(shù);

[q,d]=polyder(b,a),返回多項(xiàng)式b整除a的導(dǎo)函數(shù),其分子返回給q,分母為d;

clear
clc
x=[1 2 3 4];
y=[1 2 3 4];
z=polyder(x,y)
z =


     6    20    40    60    50    24

多項(xiàng)式求值

y=polyval(p,x),代數(shù)多項(xiàng)式求值,若x為一數(shù)值,則求在該點(diǎn)的值;若為向量、矩陣,則求向量、矩陣中的每一個(gè)值;
y=polyvalm(p,x),矩陣多項(xiàng)式求值,要求x為方陣;

p=[1,2,3];
x=1:5;
y=polyval(p,x)
y =


     6    11    18    27    38

多項(xiàng)式的根

函數(shù)roots:可以求出多項(xiàng)式等于0的根;
函數(shù)poly:可以通過多項(xiàng)式等于0的根,求出多項(xiàng)式;

p=[1 2 1];
r=roots(p) %求p的根
v=poly(r)  %求r根的多項(xiàng)式
r =


    -1
    -1


v =


     1     2     1

3.2曲線擬合

曲線擬合用一個(gè)比較簡(jiǎn)單的函數(shù)去逼近一個(gè)未知的函數(shù),曲線擬合最優(yōu)的標(biāo)準(zhǔn)采用最小二乘法原理,擬合的結(jié)果使得誤差的平方和最小。

在MATLAB上最常采用polyfit函數(shù)來求最小二乘擬合多項(xiàng)式的系數(shù),再用polyval函數(shù)求出多項(xiàng)式在所給出點(diǎn)的值;

ca0564d2-0c1b-11ee-962d-dac502259ad0.png

x=linspace(0,2*pi,50);
y=cos(x);
p=polyfit(x,y,6);
t=linspace(0,2*pi,50);
y1=polyval(p,t);
plot(x,y,t,y1,'r*')

ca16777c-0c1b-11ee-962d-dac502259ad0.png

從圖像上可以看出擬合比較好,紅色星號(hào)都在曲線上;

3.3 數(shù)據(jù)插值

(1)一維數(shù)據(jù)插值

插值函數(shù):yi=interp1(x,y,xi,method)

根據(jù)在x,y處的值,計(jì)算函數(shù)在xi處的值,其中xi的值不能大于x的值;

method插值方法:linear(線性插值)、nearest(最近點(diǎn)插值)、cubic(3次多項(xiàng)式插值)、spline(3次樣條插值);

例2:下面為1900—1990每隔10年的人口普查數(shù)據(jù):

t=19001990;

p=[75 91 105 123 131 150 179 203 226 249]

求在1985年人口數(shù)值;

t=19001990;
p=[75 91 105 123 131 150 179 203 226 249];
yi=interp1(t,p,1985)

得出1985年的人口數(shù)為:

yi =


  237.5000

估計(jì)1900—2000年人口數(shù)值

t=19001990;
p=[75 91 105 123 131 150 179 203 226 249];
xi=1900:2000;
yi=interp1(t,p,xi,'spline');
plot(t,p,':o',xi,yi,'-r')

ca3aa1e2-0c1b-11ee-962d-dac502259ad0.png

(2)二維數(shù)據(jù)插值

插值函數(shù):Z1=interp2(X,Y,Z,XI,YI,method)

X,Y為原始采樣點(diǎn),Z為對(duì)應(yīng)的采樣值,XI,YI表示欲插值的點(diǎn),method為插值方法與一維插值方法一樣;

例3:為函數(shù)peaks插入更多的線條;

[X,Y]=meshgrid(-44);
Z=peaks(X,Y);
[XI,YI]=meshgrid(-44);
ZI=interp2(X,Y,Z,XI,YI);
mesh(X,Y,Z)
hold on
mesh(XI,YI,ZI+20)

ca624918-0c1b-11ee-962d-dac502259ad0.png

3.4 數(shù)值微積分

(1)數(shù)值微分

在MATLAB中沒有直接求數(shù)值導(dǎo)數(shù)的函數(shù),只有計(jì)算向前差分的函數(shù)diff,其調(diào)用格式為:

DX=diff(X):計(jì)算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1......n-1;

DX=diff(X,n):計(jì)算X的n價(jià)向前差分;

DX=diff(A,n,dim):計(jì)算矩陣A的n價(jià)差分,dim=1(默認(rèn)值)

x=[3 2 1];
dx=diff(x)
dx =


    -1    -1

(2)數(shù)值積分

被積函數(shù)是解析式

MATLAB有兩種函數(shù)求解定積分,調(diào)用格式為:

quad(函數(shù),a,b,tol,trace)

quadl(函數(shù),a,b,tol,trace)

其中,a為下限,b為上限,tol為精度,trace是否展現(xiàn)積分過程;

ca7cfcf4-0c1b-11ee-962d-dac502259ad0.png

f=inline('1./(x.^3-2*x-5)');
y=quad(f,0,2)
y1=quadl(f,0,2)
y =


-0.4605
y1 =


   -0.4605

被積函數(shù)為表格定義

用trapz(x,y)來進(jìn)行計(jì)算,x為向量,y為x的函數(shù);

ca8e2722-0c1b-11ee-962d-dac502259ad0.png

x=01;
y=exp(-x.^2);
trapz(x,y)
ans =


    0.7468

二重積分?jǐn)?shù)值求解

MATLAB提供的函數(shù)為:

y=dblquad(f,a,b,c,d,tol,trace),

caa22254-0c1b-11ee-962d-dac502259ad0.png

function f= fan(x,y)
f=x+y;
end
y=dblquad('fan',0,2,0,2)

結(jié)果:

y =


     8

3.5 線性方程組求解

(1)直接解法

對(duì)于方程Ax=b來說,可以用x=A;即x=inv(A)*b;

cabff81a-0c1b-11ee-962d-dac502259ad0.png

A=[1 2 3;3 6 7;2 6 3];
b=[8 30 25]';
x=A
x =


   17.0000
    0.0000
   -3.0000

(2)LU求解、QR求解、Cholesky求解

例8:求例7;

A=[1 2 3;3 6 7;2 6 3];
b=[8 30 25]';
[L,U]=lu(A); %LU分解
x=U(L)


[Q,R]=qr(A); %QR分解
x_val=R(Q)


R=chol(A);   %Cholesky分解
x_val_1=R(R')

3.6 常微分方程數(shù)值求解

基于龍格—庫(kù)塔法,MATLAB提供的常微分方程求解的函數(shù)為:

[t,y]=ode23('fname',tspan,y0),二價(jià)、三價(jià)龍格—庫(kù)塔法;

[t,y]=ode45('fname',tspan,y0),四價(jià)、五價(jià)龍格—庫(kù)塔法;

fname是定義f(t,y)的函數(shù)文件名,該函數(shù)文件必須返回一個(gè)列向量;tspan形式為[t0,tf]表示求解區(qū)間,y0是初始狀態(tài)列向量;t 給出時(shí)間向量,y為狀態(tài)向量;

cad71e14-0c1b-11ee-962d-dac502259ad0.png

function f = fan(t,x)
f=[-2*x(2);x(1)];
end
tf=25;
[t,y]=ode45('fan',[t0,tf],[1,0]);
subplot(121);
plot(t,y(:,2))
subplot(122);
plot(y(:,2),y(:,1))
axis equal

cae34554-0c1b-11ee-962d-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • matlab
    +關(guān)注

    關(guān)注

    179

    文章

    2946

    瀏覽量

    229447
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    551

    瀏覽量

    24559
  • Excel
    +關(guān)注

    關(guān)注

    4

    文章

    215

    瀏覽量

    55361
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4234

    瀏覽量

    61961

原文標(biāo)題:MATLAB基礎(chǔ)教程(xlsread和xlswrit函數(shù)+數(shù)據(jù)擬合+數(shù)值計(jì)算)

文章出處:【微信號(hào):嵌入式職場(chǎng),微信公眾號(hào):嵌入式職場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB(1)--MATLAB數(shù)值數(shù)據(jù)

    設(shè)置數(shù)值數(shù)據(jù)的輸出格式,不同的格式符使得數(shù)據(jù)輸出不同。 format命令只影響數(shù)據(jù)輸出格式,而不影響數(shù)據(jù)
    發(fā)表于 09-05 16:28

    使用matlab對(duì)數(shù)據(jù)進(jìn)行擬合

    大神們,跪求使用matlab進(jìn)行數(shù)據(jù)擬合,請(qǐng)求一些免費(fèi)的資源,盡量簡(jiǎn)單點(diǎn)!!!!!
    發(fā)表于 08-21 10:52

    MATLAB曲線擬合

    值plot(x,y,'k*',x,y1,'r-');??%畫出數(shù)據(jù)對(duì)比圖,黑點(diǎn)是原始數(shù)據(jù),紅線是擬合曲線%指定函數(shù)擬合f=fittype('
    發(fā)表于 07-18 01:19

    【下載】《工程與科學(xué)數(shù)值方法的MATLAB實(shí)現(xiàn)(第2版)》

    應(yīng)用領(lǐng)域,具體包括求根與最優(yōu)化、線性代數(shù)方程組的求解、曲線擬合數(shù)值積分與微分以及常微分方程數(shù)值解。書中不但介紹了各類數(shù)值方法的基本原理和基于MAT
    發(fā)表于 08-28 17:27

    labview調(diào)用matlab中的高斯擬合函數(shù)cftool

    本帖最后由 像風(fēng)一樣飛翔! 于 2019-11-28 16:32 編輯 matlab有強(qiáng)大的擬合工具包c(diǎn)ftool,能否用labview調(diào)用matlab擬合
    發(fā)表于 11-28 16:28

    Matlab中使用S函數(shù)實(shí)現(xiàn)離散化數(shù)值計(jì)算的問題有哪些

    關(guān)于Matlab中使用S函數(shù)實(shí)現(xiàn)離散化數(shù)值計(jì)算的問題求助,現(xiàn)在我想使用S函數(shù)寫一個(gè)永磁同步電機(jī)dq軸坐標(biāo)系下的離散化數(shù)學(xué)模型,使用改進(jìn)歐拉法
    發(fā)表于 08-27 07:00

    matlab在科學(xué)計(jì)算中的應(yīng)用

    MATLAB科學(xué)計(jì)算中的應(yīng)用 在數(shù)值分析中的應(yīng)用 多項(xiàng)式與插值、數(shù)據(jù)的曲線擬合 數(shù)值微分與
    發(fā)表于 11-30 16:35 ?0次下載
    <b class='flag-5'>matlab</b>在科學(xué)<b class='flag-5'>計(jì)算</b>中的應(yīng)用

    Matlab數(shù)據(jù)擬合基礎(chǔ)函數(shù)的使用

    Matlab數(shù)據(jù)擬合基礎(chǔ)函數(shù)的使用,教你如何擬合兩個(gè)未知量
    發(fā)表于 11-10 16:45 ?0次下載

    MATLAB 7.0 基礎(chǔ)教程

    MATLAB 7.0 基礎(chǔ)教程 介紹MATLAB7.0的基礎(chǔ)教程,非常實(shí)用的教程
    發(fā)表于 12-18 11:44 ?6次下載

    Matlab基礎(chǔ)教程2

    Matlab基礎(chǔ)教程2Matlab基礎(chǔ)教程2Matlab基礎(chǔ)教程2
    發(fā)表于 12-24 16:33 ?2次下載

    matlab7.0基礎(chǔ)教程

    matlab7.0基礎(chǔ)教程,又需要的下來看看
    發(fā)表于 05-19 14:31 ?0次下載

    MATLAB入門教程之MATLAB數(shù)值計(jì)算與圖形繪制基礎(chǔ)的詳細(xì)資料概述

    MATLAB入門教程之MATLAB數(shù)值計(jì)算與圖形繪制基礎(chǔ)的詳細(xì)資料概述講授MATLAB語(yǔ)言基礎(chǔ)入門知識(shí),介紹
    發(fā)表于 10-31 08:00 ?0次下載
    <b class='flag-5'>MATLAB</b>入門教程之<b class='flag-5'>MATLAB</b><b class='flag-5'>數(shù)值</b><b class='flag-5'>計(jì)算</b>與圖形繪制基礎(chǔ)的詳細(xì)資料概述

    MATLAB中常用的數(shù)值計(jì)算數(shù)值分析基礎(chǔ)知識(shí)

    MATLAB是一個(gè)功能強(qiáng)大的數(shù)值計(jì)算和科學(xué)計(jì)算軟件,它提供了許多用于數(shù)值計(jì)算
    的頭像 發(fā)表于 07-07 09:27 ?2105次閱讀

    如何利用Matlab的lsqnonlin函數(shù)處理復(fù)雜函數(shù)擬合問題

    在工程問題的計(jì)算中,我們經(jīng)常需要處理一些離散數(shù)據(jù)擬合問題,而最小二乘法是處理曲線擬合問題的常用方法。
    的頭像 發(fā)表于 07-10 11:42 ?2246次閱讀
    如何利用<b class='flag-5'>Matlab</b>的lsqnonlin<b class='flag-5'>函數(shù)</b>處理復(fù)雜<b class='flag-5'>函數(shù)</b>的<b class='flag-5'>擬合</b>問題

    MATLAB在追跡光線計(jì)算中的應(yīng)用

    摘要 :給出了理想光具組系統(tǒng)矩陣的MATLAB計(jì)算程序,并借助MATLAB進(jìn)行光線追跡與數(shù)值擬合,得到了像差(球差)的多項(xiàng)式及曲線圖。
    的頭像 發(fā)表于 09-12 10:19 ?801次閱讀
    <b class='flag-5'>MATLAB</b>在追跡光線<b class='flag-5'>計(jì)算</b>中的應(yīng)用