系统提示我未定义与 ‘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.mzph.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&…