系統提示我未定義與 ‘double‘ 類型的輸入參數相對應的函數 ‘finverse‘,如何解決?

🏆本文收錄于「Bug調優」專欄,主要記錄項目實戰過程中的Bug之前因后果及提供真實有效的解決方案,希望能夠助你一臂之力,幫你早日登頂實現財富自由🚀;同時,歡迎大家關注&&收藏&&訂閱!持續更新中,up!up!up!!

問題描述

??核心是解三自由度微分方程組,解出θ關于時間t的變化圖像.設定一個功率恒定變加速度的工況,圖中時間t是關于速度v的函數,取反函數v=@(t)finverse(t)代入 wm_func中求得角速度.圖一是主程序,圖二是參數和方程.系統提示我未定義與 ‘double’ 類型的輸入參數相對應的函數 ‘finverse’,如圖三所示,想問一下我這個錯在哪里有沒有修改辦法或者建議

clear;clc;close all;func
%初始參數,該參數變化,myfun程序要對應調整
syms t;
syms v;
t=@(v)(505.2*ln(49897/(55000-398.7*v))+1460*(12.8-v)/398.7);
v=@(t)finverse(t);     
wm_func = @(t)(55*(finverse(t)*3.6)*9550/(3600*0.4064/(0.93*14)))*pi*2/60;zi=4;%內轉子極對數
zo=14;%外轉子極對數k
z1=32;%小齒輪齒數
z2=99;%大齒輪齒數
ms=4.62e-3;
I=z2/z1;%機械齒輪速比
G=(zo+zi)/zi;%磁齒輪速比
%一、計算過程
tmax=5;
tspan = 0:1e-4:tmax;
% tmax=900*2*pi/wm;% 計算時長,按輸入軸的周期數計算
bc=2e-5;
y0=[0;0;0;wm_func(0);wm_func(0)/G;wm_func(0)/(G*I)];
% y0=[0;0;0;wm_func;wm_func/G;wm_func/(G*I)];
[t,y] = ode45(@(t,y)myfun3(t,y,wm_func), tspan, y0);
% [t,y] = ode45(@(t,y)myfun3(t,y), tspan, y0);
% [t,y]=odeRK4sys('myfun3',tmax,bc,y0);figure;plot(t,y(:,1)/G-y(:,2));
title('時域響應圖');
xlabel('時間 (s)');
ylabel('扭轉振幅(rad)');%磁齒輪的相對彈性角度
figure;plot(t,y(:,2)/I-y(:,3));
title('時域響應圖');
xlabel('時間 (s)');
ylabel('扭轉振幅(rad)');%機械齒輪的相對彈性轉角;
figure;plot(t,y(:,1),t,y(:,2),t,y(:,3));
title('時域響應圖');
xlabel('時間 (s)');
ylabel('轉速(rad/s)');
function dydt=myfun3(t,y,wm_func)
wm = wm_func(t);
zi=4;%內轉子極對數
zo=14;%外轉子極對數
z1=32;%小齒輪齒數
z2=99;%大齒輪齒數
arf0=20/180*pi;%壓力角
ms=4.62e-3;
r2=ms*z1/2;%小齒輪分度圓
r3=ms*z2/2;%大齒輪分度圓
rb2=r2*cos(arf0);%小齒輪基圓
rb3=r3*cos(arf0);%大齒輪基圓
I=z2/z1;%機械齒輪速比
G=(zo+zi)/zi;%磁齒輪速比
% Tm =(1460*9.8*0.012+1.04*1460*2.67+0.32*2.25*(10+2.67*t*3.6)^2/21.15)*0.4064/(0.93*14);%起步加速
Tm=9550*55/(60*wm/(2*pi));                 ;
TL=Tm*I*G;%變速器負載
%3 轉動慣量
IM=0.081197;%電機轉子轉動慣量kgm2
I0=0.181197;%磁齒輪低速級轉動慣量kgm2
I1=0.013663;%磁齒輪高速級轉動慣量kgm2
I2=0.0230596;%機械小齒輪轉動慣量
I3=1.9825692;%機械大齒輪轉動慣量
IL=21;%整車等效轉動慣量%4 剛度與阻尼
%齒輪的阻尼和剛度
w1=wm*G;%機械小齒輪輸入轉速
kp=10.51e8;
kb=0.25e8;%兩個齒輪的剛度曲線為正弦曲線,
km=kp+kb*sin(w1*t*z1);
sg=0.16;%齒輪阻尼比
cm=2*sg*sqrt(kp*I2*I3/(I2*rb3^2+I3*rb2^2));b=2e-4;xx=rb2*y(2)-rb3*y(3);dxx=rb2*y(5)-rb3*y(6);if xx-b>0fx=xx-b;elseif xx+b<0fx=xx+b;elsefx=0;end
F23=km*fx+cm*dxx;
T0=1.7*Tm*G;
Tc1=0.2*T0*sin(wm*t);
Tc=0.1*(zi*y(4)-(zi+zo)*y(5));
T21=T0*sin(zi*y(1)-(zi+zo)*y(2))+Tc+Tc1;y(7)=(Tm-T21/G)/(I0+IM);
y(8)=(T21-r2*F23)/(I2+I1);
y(9)=(-TL+r3*F23)/(I3+IL);dydt=[y(4)y(5)y(6)y(7)y(8)y(9)];
end

如上問題有來自我自身項目開發,有的收集網站,有的來自讀者,如有侵權,立馬刪除。

解決方案

??如下是上述問題的解決方案,僅供參考:

??在 MATLAB 中,錯誤信息 “未定義與 ‘double’ 類型的輸入參數相對應的函數 ‘finverse’” 通常表示 MATLAB 無法找到名為 finverse 的函數,該函數應該接受 ‘double’ 類型的輸入參數。在您提供的代碼中,問題出現在以下這行:

v=@(t)finverse(t);

這里,您嘗試定義一個匿名函數 v,它使用 finverse 作為其操作。然而,finverse 并沒有在您的代碼中定義,或者沒有被正確引用。

可能的解決方案:

  1. 定義 finverse 函數:如果 finverse 是您自定義的函數,確保它在 MATLAB 的搜索路徑中,并且具有正確的定義。例如:
   function tinv = finv(t)% 這里是 finverse 函數的實現tinv = ... % 根據 t 計算逆函數的輸出end
  1. 使用 MATLAB 內置函數:如果 finverse 應該是 MATLAB 的內置函數,確保函數名正確無誤。例如,如果您想使用 fzero 函數來找到函數的零點,應該這樣寫:
   v = @(t) fzero(@(x) yourFunction(x) - t, initialGuess);

其中 yourFunction 是您要查找零點的函數,initialGuess 是一個初始猜測值。

  1. 檢查變量作用域:如果您在其他地方定義了 finverse,請確保它可以在當前作用域中訪問到。

  2. 檢查拼寫和大小寫:MATLAB 是區分大小寫的,確保函數名的拼寫和大小寫都是正確的。

  3. 使用 fevaleval:如果 finverse 是一個字符串形式的函數名,您可以使用 fevaleval 來調用:

   v = @(t) feval('finverse', t);

或者

   v = @(t) eval(['finverse(' num2str(t) ')']);
  1. 檢查 MATLAB 版本:確保您使用的 MATLAB 版本支持您嘗試調用的函數。

  2. 查看 MATLAB 函數索引:如果您不確定 finverse 的正確用法,可以查看 MATLAB 的函數索引或使用 helpwin finv(如果 finverse 是指 fmin 的逆函數,這可能是一個錯誤)。

特別注意:

  • 您提供的代碼中 t 是關于 v 的函數,但您試圖定義 vt 的函數的反函數。這需要 t(v) 是一個單調函數,以便存在唯一的反函數。
  • 如果 t(v) 不是單調的,或者您沒有正確定義 finverse,MATLAB 將無法計算 v(t)

請根據上述建議檢查和修改您的代碼。如果 finverse 是您自定義的函數,請確保它在 MATLAB 的搜索路徑中,并且具有正確的定義。如果 finverse 是內置函數或您打算使用特定的 MATLAB 函數,請確保正確引用它。

??希望如上措施及解決方案能夠幫到有需要的你。

??PS:如若遇到采納如下方案還是未解決的同學,希望不要抱怨&&急躁,畢竟影響因素眾多,我寫出來也是希望能夠盡最大努力幫助到同類似問題的小伙伴,即把你未解決或者產生新Bug黏貼在評論區,我們大家一起來努力,一起幫你看看,可以不咯。

??若有對當前Bug有與如下提供的方法不一致,有個不情之請,希望你能把你的新思路或新方法分享到評論區,一起學習,目的就是幫助更多所需要的同學,正所謂「贈人玫瑰,手留余香」。

??寫在最后

??ok,以上就是我這期的Bug修復內容啦,如果還想查找更多解決方案,你可以看看我專門收集Bug及提供解決方案的專欄「Bug調優」,都是實戰中碰到的Bug,希望對你有所幫助。到此,咱們下期拜拜。

碼字不易,如果這篇文章對你有所幫助,幫忙給bug菌來個一鍵三連(關注、點贊、收藏) ,您的支持就是我堅持寫作分享知識點傳播技術的最大動力。

同時也推薦大家關注我的硬核公眾號:「猿圈奇妙屋」 ;以第一手學習bug菌的首發干貨,不僅能學習更多技術硬貨,還可白嫖最新BAT大廠面試真題、4000G Pdf技術書籍、萬份簡歷/PPT模板、技術文章Markdown文檔等海量資料,你想要的我都有!

📣關于我

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 華為云 | 阿里云 | 騰訊云 等社區博客專家,C站博客之星Top30,華為云2023年度十佳博主,掘金多年度人氣作者Top40,掘金等各大社區簽約作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社區優質創作者;全網粉絲合計 30w+;硬核微信公眾號「猿圈奇妙屋」,歡迎你的加入!免費白嫖最新BAT互聯網公司面試真題、4000G PDF電子書籍、簡歷模板等海量資料,你想要的我都有,關鍵是你不來拿哇。


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

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

相關文章

Kubernetes 部署簡單的應用

Kubernetes 部署簡單的應用 Kubernetes 是一個強大的容器編排平臺&#xff0c;它可以幫助我們自動化應用程序的部署、擴展和管理。在本期文章中&#xff0c;我們將學習如何使用 Kubernetes 部署一個簡單的應用程序。 1. 環境準備 確保你已經安裝了 Kubernetes 集群&#xff…

【python模塊】argparse

文章目錄 argparse模塊介紹基本用法add_argument() argparse模塊介紹 argparse 模塊是 Python 標準庫中的一個用于編寫用戶友好的命令行接口&#xff08;CLI&#xff09;的模塊。它允許程序定義它所需要的命令行參數&#xff0c;然后 argparse 會自動從 sys.argv 解析出那些參…

TCP粘包解決方法

一. 產生原因及解決方法 產生原因&#xff1a;TCP是面向連接、基于字節流的協議&#xff0c;其無邊界標記。當服務端處理速度比不其接收速度時&#xff0c;就很容易產生粘包現象。 解決方法&#xff1a;目前主要有兩種解決方法&#xff0c;一個是在內容中添加分割標識&#xf…

人臉識別考勤系統

人臉識別考勤系統是一種利用生物識別技術進行自動身份驗證的現代解決方案&#xff0c;它通過分析和比對人臉特征來進行員工的出勤記錄。這種系統不僅提升了工作效率&#xff0c;還大大減少了人為錯誤和欺詐行為的可能性。 一、工作原理 人臉識別考勤系統的核心在于其生物識別…

深入剖析Python中的Pandas庫:通過實戰案例全方位解讀數據清洗與預處理藝術

引言 隨著大數據時代的到來&#xff0c;數據的質量直接影響到最終分析結果的可靠性和有效性。在這個背景下&#xff0c;Python憑借其靈活強大且易于上手的特點&#xff0c;在全球范圍內被廣泛應用于數據科學領域。而在Python的數據處理生態中&#xff0c;Pandas庫無疑是最耀眼…

高級策略:解讀 SQL 中的復雜連接

了解基本連接 在深入研究復雜連接之前&#xff0c;讓我們先回顧一下基本連接的基礎知識。 INNER JOIN&#xff1a;根據指定的連接條件檢索兩個表中具有匹配值的記錄。LEFT JOIN&#xff1a;從左表檢索所有記錄&#xff0c;并從右表中檢索匹配的記錄&#xff08;如果有&#x…

管道支架安裝

工程結構施工完畢后&#xff0c;系統管道安裝完畢后的第一步任務就是管道支架的制作安裝&#xff0c;作為對管道固定和承重作用至關重要的支、托、吊架&#xff0c;有些項目部在施工中卻往往因為對它們的重要性認識不足&#xff0c;因存在僥幸心里或經驗主義&#xff0c;導致支…

NIO為什么會導致CPU100%?

1. Java IO 類型概覽 BIO&#xff1a;阻塞I/O&#xff0c;每個連接一個線程&#xff0c;簡單但遇到高并發時性能瓶頸明顯。NIO&#xff1a;非阻塞I/O&#xff0c;JDK 1.4引入&#xff0c;一個線程處理多個IO操作&#xff0c;提高資源利用率和系統吞吐量。AIO&#xff1a;異步I…

技術探索:利用Python庫wxauto實現Windows微信客戶端的全面自動化管理

項目地址&#xff1a;github-wxauto 點擊即可訪問 項目官網&#xff1a;wxauto 點擊即可訪問 &#x1f602;什么是wxauto? wxauto 是作者在2020年開發的一個基于 UIAutomation 的開源 Python 微信自動化庫&#xff0c;最初只是一個簡單的腳本&#xff0c;只能獲取消息和發送…

kpatch Patch Author Guide

kpatch Patch Author Guide Because kpatch-build is relatively easy to use, it can be easy to assume that a successful patch module build means that the patch is safe to apply. But in fact that’s a very dangerous assumption. 由于 kpatch-build 比較容易使用…

精通Spring Cloud: Spring Cloud Config面試題詳解及參考答案(3萬字長文)

解釋Spring Cloud Config的基本功能和它在微服務架構中的作用 Spring Cloud Config是一個用于集中管理和外部化配置的工具。其核心功能在于允許開發者將配置從代碼中分離出來,放置于一個中央存儲庫中,從而簡化了配置管理,提高了應用程序的可維護性和靈活性。在微服務架構中…

論文的3個創新點方向

1、數據分析創新 通過對現有數據的分析&#xff0c;發現新的模式或趨勢&#xff0c;提出新的假設或理論的方法。隨著大數據和人工智能技術的發展&#xff0c;數據分析在科學研究中也有很多的創新。 可以通過實驗、調查、模擬、現場等方式收集相關數據。數據的質量和數量是數據…

掌握MySQL基礎命令:數據更新操作詳細操作(數據的增刪改)

MySQL數據修改是指使用SQL語句&#xff08;如UPDATE、INSERT、DELETE&#xff09;對數據庫表中的數據進行更改、添加或刪除的操作&#xff0c;常見的操作包括更新表中的記錄、插入新記錄以及刪除現有記錄 。 一、數據插入 1插入完整的數據記錄 2插入非完整的數據記錄 3插入多…

探討SpringMVC的工作原理

SpringMVC是Spring框架的一部分&#xff0c;是用于構建Web應用程序的一個模塊。SpringMVC遵循Model-View-Controller&#xff08;MVC&#xff09;設計模式&#xff0c;幫助開發者將應用程序的業務邏輯、控制邏輯和表示層分離。以下是SpringMVC的工作原理及其核心組件的詳細介紹…

Oracle數據庫導入導出詳解

在數據庫管理和維護過程中&#xff0c;數據的導入與導出是常見的需求&#xff0c;特別是在數據遷移、備份或數據分析等場景下尤為重要。Oracle數據庫作為企業級的數據庫管理系統&#xff0c;提供了強大的數據導入導出工具。本文將詳細介紹Oracle數據庫中數據導入和導出的常用方…

macOS使用Karabiner-Elements解決羅技鼠標G304連擊、單擊變雙擊的故障

記錄一下羅技鼠標G304單擊變雙擊的軟件解決過程和方案&#xff08;適用于macOS&#xff0c; 如果是Windows&#xff0c;使用AutoHotKey也有類似解決辦法、方案&#xff0c;改日提供&#xff09;&#xff1a; 背景&#xff1a;通過羅技Logitech G HUB軟件對羅技的游戲鼠標側鍵b…

攝像機反求跟蹤軟件/插件 Mocha Pro 2024 v11.0.2 CE Win

AE/PR/OFX/達芬奇/AVX插件 | 攝像機反求跟蹤軟件Mocha Pro 2024 v11.0.2 CE Win-PR模板網 Mocha Pro 軟件(插件)&#xff0c;用于平面運動跟蹤、3D跟蹤、動態觀察、對象移除、圖像穩定和PowerMesh有機扭曲跟蹤等功能。整合了SynthEyes核心的3D跟蹤算法&#xff0c;能夠快速自動…

k8s-第四節-Service

Service Service 通過 label 關聯對應的 PodServcie 生命周期不跟 Pod 綁定&#xff0c;不會因為 Pod 重創改變 IP提供了負載均衡功能&#xff0c;自動轉發流量到不同 Pod可對集群外部提供訪問端口集群內部可通過服務名字訪問 創建 Service kubectl apply -f service.yamlkub…

math.round和math.floor相互轉化

在Python中&#xff0c;math.round() 函數用于對浮點數進行四舍五入到最接近的整數&#xff0c;而 math.floor() 函數則是直接取浮點數的整數部分&#xff0c;即向下取整。如果你需要在 math.round() 和 math.floor() 之間進行某種“相互轉化”&#xff0c;實際上&#xff0c;你…

003-基于Sklearn的機器學習入門:回歸分析(上)

本節及后續章節將介紹機器學習中的幾種經典回歸算法&#xff0c;所選方法都在Sklearn庫中聚類模塊有具體實現。本節為上篇&#xff0c;將介紹基礎的線性回歸方法&#xff0c;包括線性回歸、邏輯回歸、多項式回歸和嶺回歸等。 2.1 回歸分析概述 回歸&#xff08;Regression&…