MATLAB常用語句總結7

MATLAB總結7:常見錯誤歸納

本篇專門用于記錄一些應試技巧


文章目錄

  • MATLAB總結7:常見錯誤歸納
  • 前言
  • 一、一些小定義和小技巧
  • 二、蒙塔卡羅求解方法
    • 1.函數的定義
    • 2.函數引用
    • 3.代碼量較少的蒙塔卡羅
  • 三、函數引用與多變量
  • 四、矩陣引用
  • 五、非線性函數:fmincon的使用
  • 六、線性規劃函數
    • 1.linprog
    • 2.fminbnd、fminsearch
  • 七、積分和微分
    • 1.quad積分
    • 2.積分int 微分diff
  • 八、lsqcurvefit
  • 九、矩陣求解
  • 十、polyfit 函數進行多項式擬合
  • 十一、ode23和ode45
  • 十二、fzero
  • 十三、meshgrid和surf
  • 十四、fsolve


前言

記憶力比較差,把學習過程中常用的語法記錄于此,方便回憶時索引


一、一些小定義和小技巧

  1. rand的使用

rand 是用于生成在(0,1)上隨機數的函數,而后面加入 rand(1,2),則意為一個一行兩列的(0,1)矩陣,不可亂加。需要使用不同范圍的隨機數則使用 A*rand() 即可

    x=5*rand();y=5*rand();
  1. 符號
取余:mod(A,b)%A是要進行取余的數字,b是除數
不等于:~=
  1. find()的使用
    用r=find(A<=0.6),直接找到A中小于0.6的下標

  2. 分段函數的使用

y=(x<=8).* (2*x)+(x>8&&x<12).*(3*x)+(x>12).* (4*x);
  1. upper, lower的大小寫轉換
for i=1:length(v)if v(i)=='a'r(i)=upper(r(i));elseif v(i)=='h'r(i)='2';elseif v(i)=='v'r(i)='3';end
end

二、蒙塔卡羅求解方法

在這里插入圖片描述

1.函數的定義

代碼如下(示例):

function c=myobj(x)
c=10*x(1)^3+x(3)*(x(1)^2+x(2)^2);
function r=mycon(x)
r=[x(1)^2+x(2)^2-x(3)-10 ; x(1)^2+x(2)^2+x(3)-3];
function m=myrand
while 1m=[10*rand-5 ;10*rand-5 ;10*rand-5 ];if mycon(m)<=0return end
end

2.函數引用

代碼如下(示例):

function [val,x]=myfun2
rand('seed',11);betterx=myrand;
betterval=myobj(betterx);for i=1:10000betterx=myrand;if myobj(betterx)>betterval;betterval=myobj(betterx);end
end
x=double(betterx);
val=double(betterval);

3.代碼量較少的蒙塔卡羅

function [val,x]=myfun2
rand('seed',11);
val=0;
for i=1:100000s=-10*rand(1,3)+5;if s(1)^2+s(2)^2-s(3)-10<=0 && s(1)^2+s(2)^2+s(3)-3<=0if 10*s(1)^3+s(3)*(s(1)^2+s(2)^2)>valval=10*s(1)^3+s(3)*(s(1)^2+s(2)^2);x=s;endend
end

三、函數引用與多變量

要分清多元函數的變量要用循環引用

代碼如下(示例):

function v=testmain
x=-2:0.1:2;
v=fun(x);function r=fun(x)
for i=1:length(x)if x(i)<-1r(i)=x(i)^2+2*x(i)+1;elseif x(i)>-1 && x(i)<=2r(i)=3*x(i);elser(i)=2*sqrt(x(i));end
end

四、矩陣引用

引用矩陣可以用行列索引,也可以單行單列(注意單行單列是逗號),而且引用矩陣必須是括號

代碼如下(示例):

A(1,:)%引用第一行
A(:,2)%引用第二列
A(1,:)=A(1,:).^2;%給矩陣賦值要明白給誰賦值

五、非線性函數:fmincon的使用

  1. 使用時要注意哪里是只輸入系數,哪里是方程
  2. 求最小值的是方程,其他的都只輸出系數
  3. 同種變量用逗號隔開,不同種用分號
  4. 注意noncon的位置是使用@,引用里面有()
  5. lb ub里面是逗號
  6. 函數系數的對應關系

在這里插入圖片描述

代碼如下(示例):

function [min,val]=fun3
Fun=@(x) 2*(x(1)-1)^2+3*(x(2)-1)^2+0.2*x(1)*x(2)+(2*x(3)-2)^2
A=[3 2 6;4 5 2;2 9 7];
b=[50;40;100];
Lb=[0,0,0];
ub=[15,9,25];
[min,val]=fmincon(Fun,[0,0,0],A,b,[],[],Lb,ub,@noncon);
function [c,ceq]=noncon(x)
c=[-2*x(1)^-x(2)^2-x(3)^2+5,x(1)^2+x(2)^2+2*x(3)^2-200];
ceq=[0];

六、線性規劃函數

1.linprog

求解常規線性規劃
注意!!!f 函數調用是系數

代碼如下(示例):
在這里插入圖片描述

function [x,fval]=myfun19
f=[3,-4,2];
A=[1 -1 1;3 2 4;3 2 0];
b=[10;22;10];
Aeq=[];
beq=[];
lb=[0,0,0];
ub=[inf,inf,inf];
[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub);

2.fminbnd、fminsearch

用于找到極小值,fminbnd找到區間內,fminsearch找到從某一點開始的極小值
fminbnd

[x,val] = fminbnd(fun, x1, x2)

% 定義要最小化的函數
fun = @(x) x^2 + 2*x + 1;% 在區間[-2, 2]內尋找最小值
[x,val] = fminbnd(fun, -2, 2);

fminsearch

% 定義要最小化的函數
fun = @(x) x(1)^2 + x(2)^2;% 指定初始點
x0 = [1, 1];% 在多維空間中尋找最小值
x = fminsearch(fun, x0);

七、積分和微分

1.quad積分

y=@(x) (3.*x+2)./(x.^3+2.*x+5);
r=quad(y,0,3);

2.積分int 微分diff

在這里插入圖片描述
在這里插入圖片描述

F=@(x,y) exp(2*x.^2+3*y.^2);
I=integral2(F,0.5,1,0,1);%取值范圍

八、lsqcurvefit

  1. xdata,ydata儲存數據,x(i)存放未知變量
  2. 調用時要把 fun(x,xdata) 全部帶上
  3. 注意調用時,x和x1的意義是已經計算的系數和要代入計算的函數值,他們的位置和使用fun時的位置相對應!!!

代碼如下(示例):

xdata=[10.03,20.04,30.23,40.37,50.16,60.4,70.3,80.66,90.69,100.16,110.94,121.18,130.66,141.23,150.88,160.24];
ydata=[50.44,82.95,133.07,202.76,286.39,381.34,467.36,540.54,591.7,624.28,647.62,660.77,668.06,672.83,675.36,676.82];
fun = @(x,xdata) x(1)./(1+((x(1)/x(2))-1).*exp(-x(3)*xdata));
x0 = [1,1,1];
x = lsqcurvefit(fun,x0,xdata,ydata);
x1=[150:0.5:190];
y=fun(x,x1);

九、矩陣求解

  1. 可以使用linsolve
  2. 也可以求逆
  3. 或者是符號“\”
    在這里插入圖片描述

代碼如下(示例):

a=[1 1 -1 2;-1 -2 1 -3;1 1 1 -3;2 1 -3 1];
e=[-3;1;-7;4];
x=inv(a)*e;
a=[1 1 -1 2;-1 -2 1 -3;1 1 1 -3;2 1 -3 1];
e=[-3;1;-7;4];
x=linsolve(a,e);
a=[1 1 -1 2;-1 -2 1 -3;1 1 1 -3;2 1 -3 1];
e=[-3;1;-7;4];
x=a\e;

十、polyfit 函數進行多項式擬合

  1. p = polyfit(x, y, n);
  2. x 是數據點的 x 值(自變量)向量,y 是數據點的 y 值(因變量)向量,n 是要擬合的多項式的次數。
  3. polyval(p,50); 用于計算特定位置的值

代碼如下(示例):

% 示例數據點
t=[1,6,11,16,21,26,31,36];
x=[5.35,10.51,15.664,20.76,25.94,30.08,35.22,40.36];
p=polyfit(t,x,1);
val=polyval(p,50);
r=[p,val];

十一、ode23和ode45

  1. 使用myode時,注意輸入要把x,y都帶上,先是自變量,后是因變量
  2. y(1)可表示y,y(2)可表示一階導數
  3. 輸出 [t,y] 分別是對應時間點和對應時間的輸出值

在這里插入圖片描述

y1 = 0:0.01:1;%取值范圍
y0 = 1;初值
[t,y] = ode23(@myode, y1, y0);function dydx=myode(x,y)dydx=(2/3)*x/y^2;
function r = myfunx1 = 0:0.1:100;%定義范圍x0 = [2; 0]; %定義初始條件[t, x] = ode23(@myode, x1, x0);%這里的x是一個向量
endfunction dxdt = myode(t, x)dxdt = [20*(1-x(1)^2)*x(2) + 0.5*x(1); 0];%x(1)代表x,x(2)代表dx/dt
end

十二、fzero

x0 是初始猜測的根的值。

代碼如下(示例):

x = fzero(fun, x0)
x = fzero(fun, x0, options)

十三、meshgrid和surf

  1. 注意z的輸出
  2. [x,y]=meshgrid(x取值,y取值)
  3. surf繪制表面圖

代碼如下(示例):

function z=myfun24
[x,y]=meshgrid(-3:0.1:3,-3:0.1:3);
z=x.*y.*exp(sin(x.^2+y.^2));
surf(x,y,z);

十四、fsolve

  1. 記住兩個公式:root2和fsolve的使用
  2. folsve(@root2,x0)
  3. f=root2(x) f(1)= f(2)=

代碼如下(示例):

% 示例數據點
function r=myfun29
x0=[0,0];
r=fsolve(@root2,x0);function f=root2(x)
f(1)=x(1)^2-x(2)-1;
f(2)=(x(1)-2)^2+(x(2)-0.5)^2-1;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42187.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42187.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42187.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

14-39 劍和詩人13 - 頂級大模型測試分析和建議

????? 隨著對高級語言功能的需求不斷飆升&#xff0c;市場上涌現出大量語言模型&#xff0c;每種模型都擁有獨特的優勢和功能。然而&#xff0c;駕馭這個錯綜復雜的生態系統可能是一項艱巨的任務&#xff0c;開發人員和研究人員經常面臨選擇最適合其特定需求的模型的挑戰。…

哈弗架構和馮諾伊曼架構

文章目錄 1. 計算機體系結構 2. 哈弗架構&#xff08;Harvard Architecture&#xff09; 3. 改進的哈弗架構 4. 馮諾伊曼架構&#xff08;Von Neumann Architecture&#xff09; 5. 結構對比 1. 計算機體系結構 計算機體系結構是指計算機系統的組織和實現方式&#xff0c…

Python | Leetcode Python題解之第220題存在重復元素III

題目&#xff1a; 題解&#xff1a; class Solution(object):def containsNearbyAlmostDuplicate(self, nums, k, t):from sortedcontainers import SortedSetst SortedSet()left, right 0, 0res 0while right < len(nums):if right - left > k:st.remove(nums[left]…

Python基礎問題匯總

為什么學習Python&#xff1f; 易學易用&#xff1a;Python語法簡潔清晰&#xff0c;易于學習。廣泛的應用領域&#xff1a;適用于Web開發、數據科學、人工智能、自動化腳本等多種場景。強大的庫支持&#xff1a;擁有豐富的第三方庫&#xff0c;如NumPy、Pandas、TensorFlow等…

Sass 語法

文章目錄 編譯變量 \$嵌套 {} > \~導入 import注釋 // /*\* \**/混入 mixin/include繼承 extend數據類型運算控制 if/for/each/while函數 function媒體查詢 media根發出 at-root警告warn/錯誤error/調試debug 編譯 編譯命令 單文件轉換命令 sass input.scss output.css單…

數學基礎 -- 反函數

反函數技術文檔 反函數的定義 反函數&#xff08;inverse function&#xff09;是指一種將函數的輸出反過來作為輸入&#xff0c;從而恢復原來輸入的函數。具體來說&#xff0c;如果有一個函數 f f f&#xff0c;它把一個值 x x x 映射到一個值 y y y&#xff0c;即 f ( …

68.WEB滲透測試-信息收集- WAF、框架組件識別(8)

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 內容參考于&#xff1a; 易錦網校會員專享課 上一個內容&#xff1a;67.WEB滲透測試-信息收集- WAF、框架組件識別&#xff08;7&#xff09; 右邊這些是waf的…

Mean teacher are better role models-論文筆記

論文筆記 資料 1.代碼地址 2.論文地址 https://arxiv.org/pdf/1703.01780 3.數據集地址 CIFAR-10 https://www.cs.utoronto.ca/~kriz/cifar.html 論文摘要的翻譯 最近提出的Temporal Ensembling方法在幾個半監督學習基準中取得了最先進的結果。它維護每個訓練樣本的標簽…

PCIe驅動開發(1)— 開發環境搭建

PCIe驅動開發&#xff08;1&#xff09;— 開發環境搭建 一、前言 二、Ubuntu安裝 參考: VMware下Ubuntu18.04虛擬機的安裝 三、QEMU安裝 下載網站&#xff1a; https://download.qemu.org 下載文件&#xff1a;qemu-4.1.0-rc5.tar.xz 使用如下命令解壓&#xff1a; tar …

opencv 設置超時時間

經常爬視頻數據&#xff0c;然后用opencv做成圖片 因此設置超時時間很重要 cap.set(cv2.CAP_PROP_FPS, timeout_ms) for idx, row in data.iterrows(): if idx < 400: continue try: # 打開視頻文件 timeout_ms 5000 cap cv2.VideoCapture(row[PLAY_URL]) cap.set(cv2.C…

Linux下使用libiw進行無線信號掃描的實例

打開電腦連接wifi是一件很平常的事情,但這些事情通常都是操作系統下的wifi管理程序替我們完成的,如何在程序中掃描wifi信號其實資料并不多,前面已經有兩篇文章介紹了如何使用ioctl()掃描wifi信號,但其實在Linux下有一個簡單的庫對這些ioctl()的操作進行了封裝,這個庫就是l…

深入追蹤:IPython 中 %tb 命令的異常追蹤棧使用指南

深入追蹤&#xff1a;IPython 中 %tb 命令的異常追蹤棧使用指南 在 IPython 的強大功能中&#xff0c;%tb 命令是一個調試工具&#xff0c;用于在出現異常時查看詳細的異常追蹤棧信息。這對于開發者來說是一個不可或缺的功能&#xff0c;因為它提供了對錯誤發生上下文的深入了…

Unity 中,常用的 UnityEngine.Events 中的幾個重要的事件處理函數

在 Unity 中&#xff0c;常用的 UnityEngine.Events 中的幾個重要的事件處理函數包括&#xff1a; UnityEvent UnityEvent 是 Unity 提供的一種事件系統&#xff0c;可以用來實現腳本與場景中的對象之間的互動。它可以用來定義和響應事件&#xff0c;如按鈕點擊、物體碰撞等。示…

GPT-5或重塑我們的工作與生活

引言 在人工智能發展的浪潮中&#xff0c;每一次技術的革新都如同潮水般涌來&#xff0c;帶來前所未有的機遇與挑戰。當新一代大語言模型GPT-5即將登場的消息傳來&#xff0c;我們不禁要問&#xff1a;它將如何重塑我們的工作和日常生活&#xff1f;又將開啟哪些嶄新的應用場景…

故障模式與影響分析(FMEA)的概念

故障模式與影響分析&#xff08;FMEA&#xff09;的概念 故障模式與影響分析&#xff08;Failure Mode and Effects Analysis&#xff0c;FMEA&#xff09;是一種系統性評估方法&#xff0c;用于識別產品設計或過程中可能發生的潛在故障模式&#xff0c;以及這些故障模式對系統…

制作爬取4399游戲名稱軟件

def 爬取4399(): #發送請求并且拿到源代碼 import requests 鏈接https://www.4399.com/ #網站鏈接 請求頭{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0} #構造請求頭用于爬取網站源代碼使用 網站源代碼…

MySQL遠程登錄

root是超級管理員&#xff0c;默認情況下&#xff0c;root不能作為遠程登錄的用戶名&#xff0c;遠程登錄前&#xff0c;需要將登錄的數據庫在本地登錄&#xff0c;修改權限&#xff0c;輸入&#xff1a; update user set host & where user root ; 回車鍵&#xff0c…

clickhouse高可用可拓展部署

clickhouse高可用&可拓展部署 1.部署架構 1.1高可用架構 1.2硬件資源 部署服務 節點名稱 節點ip 核數 內存 磁盤 zookeeper zk-01 / 4c 8G 100G zk-02 / 4c 8G 100G zk-03 / 4c 8G 100G clikehouse ck-01 / 32c 128G 2T ck-02 / 32c 128G 2T ck-03 / 32c 128G 2T ck-04 /…

[Qt] 控件的QSizePolicy屬性選項

在Qt中&#xff0c;QSizePolicy是一個非常重要的枚舉類&#xff0c;它定義了控件&#xff08;widgets&#xff09;在布局管理&#xff08;layout management&#xff09;中的大小調整策略。這些策略決定了當控件的父布局或窗口大小發生變化時&#xff0c;控件應該如何調整自身的…

java wait, notify, notifyAll三個方法

wait(), notify(), 和 notifyAll() 是 Java 中用于線程間通信和同步的方法&#xff0c;它們都是 Object 類中的方法&#xff0c;而非 Thread 類的方法。這些方法通常與 synchronized 關鍵字一起使用&#xff0c;用于實現線程之間的協作和互斥訪問共享資源。 關于生產者-消…