chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

嵌入式職場 ? 來源:數(shù)學建模CUMCM ? 2023-06-16 16:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、xlsreadxlswrit函數(shù)

MATLAB中經(jīng)常會用到數(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 多項式擬合

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

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為各項的系數(shù),結(jié)果展示為:

P 0.148-1.403 1.85368.2698

故多項式的結(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ù)值計算

3.1多項式

(1)多項式表示方法

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

(2)多項式的運算

多項式乘除運算

計算代碼:

clear 
clc


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


%多項式相除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

多項式的導函數(shù)

k=polyder(p),返回多項式p的導函數(shù);
k=polyder(a,b),返回多項式a乘以b的導函數(shù);

[q,d]=polyder(b,a),返回多項式b整除a的導函數(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

多項式求值

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

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


     6    11    18    27    38

多項式的根

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

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


    -1
    -1


v =


     1     2     1

3.2曲線擬合

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

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

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

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

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

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

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

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

method插值方法:linear(線性插值)、nearest(最近點插值)、cubic(3次多項式插值)、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

估計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為原始采樣點,Z為對應的采樣值,XI,YI表示欲插值的點,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ù)值導數(shù)的函數(shù),只有計算向前差分的函數(shù)diff,其調(diào)用格式為:

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

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

DX=diff(A,n,dim):計算矩陣A的n價差分,dim=1(默認值)

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)來進行計算,x為向量,y為x的函數(shù);

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

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


    0.7468

二重積分數(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)直接解法

對于方程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ù)值求解

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

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

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

fname是定義f(t,y)的函數(shù)文件名,該函數(shù)文件必須返回一個列向量;tspan形式為[t0,tf]表示求解區(qū)間,y0是初始狀態(tài)列向量;t 給出時間向量,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)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    189

    文章

    3016

    瀏覽量

    237510
  • 文件
    +關注

    關注

    1

    文章

    587

    瀏覽量

    25909
  • Excel
    +關注

    關注

    4

    文章

    230

    瀏覽量

    57532
  • 函數(shù)
    +關注

    關注

    3

    文章

    4405

    瀏覽量

    66792

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

文章出處:【微信號:嵌入式職場,微信公眾號:嵌入式職場】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

    matlab數(shù)值計算

    matlab數(shù)值計算?。?!
    發(fā)表于 12-08 18:10

    使用matlab數(shù)據(jù)進行擬合

    大神們,跪求使用matlab進行數(shù)據(jù)擬合,請求一些免費的資源,盡量簡單點!?。。。?/div>
    發(fā)表于 08-21 10:52

    MATLAB曲線擬合

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

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

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

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

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

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

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

    matlab在科學計算中的應用

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

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

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

    MATLAB 7.0 基礎教程

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

    Matlab基礎教程2

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

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

    MATLAB入門教程之MATLAB數(shù)值計算與圖形繪制基礎的詳細資料概述講授MATLAB語言基礎入門知識,介紹
    發(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'>計算</b>與圖形繪制基礎的詳細資料概述

    MATLAB中常用的數(shù)值計算數(shù)值分析基礎知識

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

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

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

    MATLAB在追跡光線計算中的應用

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