色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

嵌入式職場 ? 來源:數學建模CUMCM ? 2023-06-16 16:07 ? 次閱讀

1、xlsreadxlswrit函數

MATLAB中經常會用到數據的讀取,首先是從Excel中讀取數據到MATLAB中去。下面給出原始Excel數據內容:

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

在MATLAB讀取結果如下:

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'表示讀取數據的范圍。

xlswrite函數:

可以從MATLAB中寫入數據到Excel中去,下面給出要寫入數據:

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、數據擬合

2.1 多項式擬合

例如:有兩組數據為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為原始數據,N為擬合最高次冪,

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

polyval(P,xi),P為各項的系數,結果展示為:

P 0.148-1.403 1.85368.2698

故多項式的結果為:

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*');

得出結果如下:

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

2.3自定義擬合函數

例如:要擬合數據:

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-');

結果:

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是自定義擬合函數,cfun=fit(x,y,f)擬合數據x、y,x、y必須為列向量。

故結果為:

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

3、數值計算

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為多項式相乘函數,也可以嵌套使用;
m=conv(conv(u,p),v)  


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

結果:

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

多項式的導函數

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

[q,d]=polyder(b,a),返回多項式b整除a的導函數,其分子返回給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),代數多項式求值,若x為一數值,則求在該點的值;若為向量、矩陣,則求向量、矩陣中的每一個值;
y=polyvalm(p,x),矩陣多項式求值,要求x為方陣;

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


     6    11    18    27    38

多項式的根

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

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


    -1
    -1


v =


     1     2     1

3.2曲線擬合

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

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

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 數據插值

(1)一維數據插值

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

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

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

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

t=19001990;

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

求在1985年人口數值;

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

得出1985年的人口數為:

yi =


  237.5000

估計1900—2000年人口數值

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)二維數據插值

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

X,Y為原始采樣點,Z為對應的采樣值,XI,YI表示欲插值的點,method為插值方法與一維插值方法一樣;

例3:為函數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 數值微積分

(1)數值微分

在MATLAB中沒有直接求數值導數的函數,只有計算向前差分的函數diff,其調用格式為:

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)數值積分

被積函數是解析式

MATLAB有兩種函數求解定積分,調用格式為:

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

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

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

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

被積函數為表格定義

用trapz(x,y)來進行計算,x為向量,y為x的函數;

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

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


    0.7468

二重積分數值求解

MATLAB提供的函數為:

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)

結果:

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 常微分方程數值求解

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

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

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

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    187

    文章

    2987

    瀏覽量

    231778
  • 文件
    +關注

    關注

    1

    文章

    573

    瀏覽量

    24928
  • Excel
    +關注

    關注

    4

    文章

    225

    瀏覽量

    55865
  • 函數
    +關注

    關注

    3

    文章

    4353

    瀏覽量

    63296

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

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

收藏 人收藏

    評論

    相關推薦

    MATLAB(1)--MATLAB數值數據

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

    matlab數值計算

    matlab數值計算!!!
    發表于 12-08 18:10

    使用matlab數據進行擬合

    大神們,跪求使用matlab進行數據擬合,請求一些免費的資源,盡量簡單點!!!!!
    發表于 08-21 10:52

    MATLAB曲線擬合

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

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

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

    labview調用matlab中的高斯擬合函數cftool

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

    Matlab中使用S函數實現離散化數值計算的問題有哪些

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

    matlab在科學計算中的應用

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

    Matlab數據擬合基礎函數的使用

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

    MATLAB 7.0 基礎教程

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

    Matlab基礎教程2

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

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

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

    MATLAB中常用的數值計算數值分析基礎知識

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

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

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

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

    摘要 :給出了理想光具組系統矩陣的MATLAB計算程序,并借助MATLAB進行光線追跡與數值擬合,得到了像差(球差)的多項式及曲線圖。
    的頭像 發表于 09-12 10:19 ?1138次閱讀
    <b class='flag-5'>MATLAB</b>在追跡光線<b class='flag-5'>計算</b>中的應用
    主站蜘蛛池模板: 在线观看国产精选免费 | 国产精亚洲视频综合区 | 欧美激情精品久久久久 | 亚洲日本欧美天堂在线 | 女女破视频在线观看 | 国产ts调教| 免费中文字幕视频 | 少妇的肉体AA片免费 | 女人夜夜春 | 亚洲最大成人 | 在线日韩欧美一区二区三区 | 日本高清在线一区二区三区 | 97人摸人人澡人人人超一碰 | 国产精品嫩草影院一区二区三区 | 国产真实乱对白精彩 | 国产精品毛片AV久久97 | 狠狠人妻久久久久久综合九色 | 神马电影院午夜神福利在线观看 | 久久视热频国产这里只有精品23 | 在线观看免费视频a | 久久精品视频在线看99 | 国产精品高潮呻吟AV久久96 | 国产精品美女久久久久AV超清 | SM双性精跪趴灌憋尿调教H | 欧洲-级毛片内射八十老太婆 | 麻豆乱码一卡二卡三卡视频 | 亚洲国产成人久久精品影视 | 国产成久久免费精品AV片天堂 | 色就色 综合偷拍区欧美 | 亚洲这里只有精品 | 亚洲精品自在在线观看 | 日韩亚洲国产欧美免费观看 | 欧美最猛性XXXXX肛交 | 嫩草影院久久国产精品 | 琪琪午夜福利免费院 | 久久久青青 | 办公室里做好紧好爽H | 中文字幕国产视频 | 97ganmeizi| 久久综合亚洲色hezyo | 久久re视频这里精品免费1 |