MATLAB:插值函數之interp與griddata

MATLAB 提供了多種插值函數來處理不同維度的數據。其中,interp1、interp2 和 griddata?是常用的插值函數,分別用于一維、二維和多維(不規則)數據的插值

之前有對interp1進行過詳細介紹,如需詳細了解,請查看另一篇博客。

一、函數介紹

下面是這三個函數的用法和實際例子:

1.interp1

功能:對一維數據進行插值。

語法

vq = interp1(x, v, xq)
vq = interp1(x, v, xq, method)
vq = interp1(x, v, xq, method, extrapolation)

參數

  • x: 原始數據的 x 坐標向量。
  • v: 原始數據的值向量。
  • xq: 需要插值的查詢點向量。
  • method: 插值方法(可選,默認為?'linear'),如?'linear'(線性插值)、?'nearest'(最近鄰插值)、?'spline'(樣條插值)等。
  • extrapolation: 外推方法(可選)。
x = 0:10;          % 原始數據點 x
v = sin(x);        % 原始數據的值
xq = 0:0.5:10;     % 查詢點
vq = interp1(x, v, xq, 'spline'); % 使用'spline'方法進行插值% 繪圖
plot(x, v, 'o', xq, vq, '-');
legend('原始數據', '插值數據');

?

2.interp2

功能:對二維數據進行插值。

語法

Vq = interp2(X, Y, V, Xq, Yq)
Vq = interp2(V, Xq, Yq)
Vq = interp2(..., method)

參數

  • X,?Y: 原始數據的網格坐標矩陣(由?meshgrid?生成)。
  • V: 原始數據值的矩陣。
  • Xq,?Yq: 查詢點的坐標矩陣。
  • method: 插值方法(可選),如?'linear''nearest''spline''cubic'?等。
[X, Y] = meshgrid(1:5, 1:5);       % 原始數據網格
V = peaks(5);                      % 原始數據值
[Xq, Yq] = meshgrid(1:0.1:5, 1:0.1:5); % 查詢點
Vq = interp2(X, Y, V, Xq, Yq, 'cubic'); % 使用“cubic”插值% 繪圖
mesh(Xq, Yq, Vq); 
hold on;
plot3(X, Y, V, 'o');  % 添加原始數據點

?

3.griddata

功能:對不規則數據進行插值,并生成規則網格上的插值值。

語法

Vq = griddata(x, y, v, xq, yq)
Vq = griddata(x, y, v, xq, yq, method)
x = rand(10, 1) * 10;       % 隨機 x 坐標
y = rand(10, 1) * 10;       % 隨機 y 坐標
v = sin(x) + cos(y);        % 原始數據值
[xq, yq] = meshgrid(0:0.1:10, 0:0.1:10); % 查詢點網格
vq = griddata(x, y, v, xq, yq, 'cubic'); % 使用“cubic”插值% 繪圖
mesh(xq, yq, vq); 
hold on;
plot3(x, y, v, 'o');  % 添加原始數據點

?

二、實踐

請繪制電機效率MAP二維圖。

題目說是二維圖,是應該使用interp1進行插值嗎?實際上,電機效率MAP是指電機的效率與轉矩和轉速的關系,將三維平面投影到了二維圖,具體代碼如下:

%% 繪制電機效率MAP二維圖
clc
clear
% 定義原始數據
n = [300 300 700 700 700 900 900 900 1500 1500 3000 3000 4000 4000 5000 5000 6000 6000 7000 7000];
T = [138 50 328 138 50 328 138 50 138 50 138 50 50 30 50 30 50 30 40 30];
nt = [0.748 0.844 0.749 0.922 0.925 0.794 0.927 0.926 0.922 0.921 0.952 0.941 0.939 0.915 0.898 0.886 0.882 0.879 0.846 0.841];% 創建插值網格
n1 = linspace(300, 7000, 1000);  % 在300到7000之間生成1000個點的數組
T1 = linspace(30, 350, 1000);    % 在30到350之間生成1000個點的數組
[n1, T1] = meshgrid(n1, T1);     % 生成網格矩陣% 對原始數據進行插值以生成網格點上的效率數據
nt1 = griddata(n, T, nt, n1, T1);% 繪制插值后的偽彩色圖
pcolor(n1, T1, nt1)
shading interp  % 插值方式顯示偽彩色圖,讓顏色在相鄰單元之間平滑過渡hold on  % 保持當前圖形,允許在上面添加更多圖形% 添加顏色條(色條)
colorbar% 繪制等高線圖并設置等高線的數量
[C, h] = contourf(n1, T1, nt1, 7);% 設置x軸和y軸標簽
xlabel("轉速/(r/min)")
ylabel("轉矩/N.m")% 手動添加等高線標簽
clabel(C, h, 'manual')

請繪制電機效率MAP三維圖?

%% 繪制電機效率MAP三維圖
clc
clear
% 定義原始數據
n = [300 300 700 700 700 900 900 900 1500 1500 3000 3000 4000 4000 5000 5000 6000 6000 7000 7000];
T = [138 50 328 138 50 328 138 50 138 50 138 50 50 30 50 30 50 30 40 30];
nt = [0.748 0.844 0.749 0.922 0.925 0.794 0.927 0.926 0.922 0.921 0.952 0.941 0.939 0.915 0.898 0.886 0.882 0.879 0.846 0.841];% 創建插值網格
n1 = linspace(300, 7000, 50);  % 在300到7000之間生成1000個點的數組
T1 = linspace(30, 350, 50);    % 在30到350之間生成1000個點的數組
[n1, T1] = meshgrid(n1, T1);     % 生成網格矩陣% 對原始數據進行插值以生成網格點上的效率數據
nt1 = griddata(n, T, nt, n1, T1);mesh(n1, T1, nt1)
xlabel('轉速/(r/min)')
ylabel('轉矩/N.m')
zlabel('效率')

?

參考資料:《Matlab編程與汽車仿真應用》?——崔勝民

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

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

相關文章

會聲會影調速怎么用 會聲會影如何調整音頻速度

會聲會影是一款功能強大的視頻編輯軟件,可以幫助我們輕松的實現剪輯。 會聲會影的操作簡單易懂,界面簡潔明快。適合家庭使用, 我們使用會聲會影可以在家就能將視頻剪輯成好萊塢大片。但是在使用的過程中,仍然會遇到一些操作上的問…

洛谷 P3803 【模板】多項式乘法(FFT)

【模板】多項式乘法(FFT) 題目背景 這是一道多項式乘法模板題。 注意:本題并不屬于中國計算機學會劃定的提高組知識點考察范圍。 題目描述 給定一個 n n n 次多項式 F ( x ) F(x) F(x),和一個 m m m 次多項式 G ( x ) G(…

C語言--指針數組和數組指針的區別

指針數組 就是一個數組,由指針構成的數組,每一個元素都是指針,每個指針可以指向不同的內存地址,這些地址可以是數組、變量。 int var1 10; int var2 20; int var3 30;int *ptrArray[3]; // 定義一個指針數組,包含…

2024年上半年軟件系統架構師論文【回憶版】

文章目錄 考試時間考試地點案例分析1、微服務架構的優點和缺點2、質量屬性的6個元素3、分布式鎖 Redis的缺點4、MongoDB 存儲矢量圖的優勢 論文回憶版論文一、論單元測試的設計與應用論文二、論大數據模型的設計與應用論文三、論模型驅動的架構設計及應用論文四、論云原生運維的…

Mybatis-Plus-Join

1. 簡介 官網 https://mybatisplusjoin.com/ 2. 基本用法 步驟&#xff1a; 添加依賴 <!--mybatis-plus-join--> <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><ve…

探索LangGraph:如何創建一個既智能又可控的航空客服AI

這種設計既保持了用戶控制權&#xff0c;又確保了對話流程的順暢。但隨著工具數量的增加&#xff0c;單一的圖結構可能會變得過于復雜。我們將在下一節中解決這個問題。 第三部分的圖將類似于下面的示意圖&#xff1a; 狀態定義 首先&#xff0c;定義圖的狀態。我們的狀態和L…

homography原理和圖像相似度計算

1. homography 講homography原理 講homography應用 2. 圖像相似度計算 20230621-計算兩幅圖像的相似度 20221205-有史以來最全的圖像相似度算法 20231112-圖像相似度對比方法

C++:List的使用和模擬實現

???學習的道路很枯燥&#xff0c;希望我們能并肩走下來! 文章目錄 目錄 文章目錄 前言 一 list的介紹及使用 1.1 list的介紹 1.2 list的使用 1.2.1 list的構造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers …

golang+redis的延時隊列

網址 https://github.com/cfanbo/delay-queue-redis 代碼結構很簡單&#xff0c;簡單代表著自由度很高&#xff0c;使用過程中出現問題也很好修改。 我很喜歡這樣的代碼&#xff0c;至少我看的懂&#xff0c;該有的都有。 //package main // //import ( // "context&q…

leetcode209_長度最小的子數組

要求某個連續的區間內的元素值總和>S . 思路&#xff1a;滑動窗口&#xff1a;本質上是一種雙指針法。 &#xff08;1&#xff09;初始化left right 0&#xff1b; &#xff08;2&#xff09;left不動&#xff0c;right移動&#xff0c;擴大窗口&#xff0c;直至符合要…

selinux的安全策略可以影響ntp的方式

SELinux 是一個靈活而強大的模塊化安全策略框架&#xff0c;它允許管理員定義和執行非常具體的訪問控制策略。這些策略可以限制程序和進程對系統資源的訪問&#xff0c;包括文件、網絡端口、進程間通信等。 對于NTP&#xff0c;SELinux 策略可以影響以下幾個方面&#xff1a; …

網絡空間安全數學基礎·整除與同余

主要內容&#xff1a; 整除的基本概念&#xff08;掌握&#xff09; 素數&#xff08;掌握&#xff09; 同余的概念&#xff08;掌握&#xff09; 1.1整除 定義&#xff1a;設a&#xff0c;b是任意兩個整數&#xff0c;其中b≠0&#xff0c;如果存在一個整數q&#xff0c;使 …

12306技術內幕

公司內部做的一次技術分享 文章目錄 12306的成就12306系統特點12306系統難點解決思路產品角度技術角度余票庫存的表如何設計&#xff1f; 搶票軟件推薦巨人的肩膀 對于未公開的技術部分&#xff0c;只能結合已公開的信息&#xff0c;去做大膽的猜想。 本文提到的一些解決方案&…

SpringBoot + Mybatis-Plus中樂觀鎖實現

悲觀鎖 悲觀鎖是一種悲觀思想&#xff0c;它認為數據很可能會被別人所修改 所以總會對數據進行上鎖&#xff0c;讀操作和寫操作都會上鎖&#xff0c;性能較低&#xff0c;使用較少&#xff01; 樂觀鎖 樂觀鎖是一種樂觀思想&#xff0c;它認為數據并不一定會被別人所修改 所以…

成為程序員后我都明白了什么?從入行到棄坑?

作為一個入行近10年的php程序員&#xff0c;真心感覺一切都才剛開始&#xff0c;對計算機&#xff0c;編程語言的理解也好&#xff0c;程序員中年危機也罷&#xff0c;之前都是聽別人說的&#xff0c;真的自己到了這個水平&#xff0c;這個年齡才深刻體會到這其中的種種。 我一…

測試基礎05:軟件測試的分類

課程大綱 1、兩種架構&#xff08;Architecture&#xff09; 1.1、B/S&#xff08;Browser/Server&#xff09; 瀏覽器服務器架構&#xff08;大體3步&#xff09;&#xff1a;用戶通過瀏覽器向服務器發出請求&#xff0c;服務器處理請求&#xff0c;將結果通過網絡返回到用戶…

使用Webcam實現攝像頭的開啟和關閉,并保存和復制圖片

實現思路 0&#xff0c;將webcam的jar文件傳入項目中 1&#xff0c;顯示攝像頭的地方&#xff1a;創建一個畫板&#xff0c;在畫板上添加開啟和關閉按鈕 2&#xff0c;設置開啟和關閉功能&#xff1a;創建一個類實現動作監聽器&#xff0c;進而實現監聽動作按鈕 3&#xff…

【數據結構與算法篇】二叉樹鏈式結構及實現

【數據結構與算法篇】二叉樹鏈式結構及實現 &#x1f955;個人主頁&#xff1a;開敲&#x1f349; &#x1f525;所屬專欄&#xff1a;每日刷題&#x1f34d; &#x1f33c;文章目錄&#x1f33c; 4. 二叉樹鏈式結構的實現 4.1 前置說明 4.2 二叉樹的遍歷 4.2.1 前序、中序以及…

通過ssh在本地打開遠程服務器的網頁

用途 在遠程服務器使用jupyter notebook或者tensorboard等時&#xff0c;在本地打開服務器端的網頁的方式有很多比如可以使用MobaXterm工具等&#xff0c;此方法可參考https://blog.csdn.net/cc__cc__/article/details/108060618?spm1001.2014.3001.5502。 若直接使用ssh則可…