python调用MATLAB函数的一个诡异的问题,数据类型问题

记一次python调用MATLAB函数的诡异问题

  • 说明(废话)
  • 解决方案
  • 总结

说明(废话)

这个问题的起因是python调用MATLAB函数的问题,归根结底,主要还是因为不同语言对于不同的数据表达的方式不同造成的问题。
python调用MATLAB函数,将输入参数保存后,居然与手动输入的值运行的结果不一样,叫很多人确认过,真的完全一模一样,出来的结果却相差很远。
aa=test(10869,10000)
我用MATLAB命令行调用的结果是一个值,当这两个数通过python函数传递的时候却是另外一个值,叫小伙伴看了,值是一模一样的,这就真的诡异…

解决方案

因为变量参数的类型原因
一直以为MATLAB中只有double数据类型。输入的类型总是会将数据转为double数值类型。但是现实是我错了。为了验证我的问题,我写了两个MATLAB验证程序。

function sum = myAdd(a, b)
%     sum = a + b;
%     disp(sum);        
ii = int64(10000)    
class(ii)    
ff = 10000.0    
class(ff)    
end

输出结果
在这里插入图片描述
好吧,matlab确实是有int64数据类型,而且,命令行输入的数据都默认为double类型,也就是,无论输入10还是10.0,参数都是double类型,除非显示指定为int64类型。

那么除法的结果呢?

function sum = myAdd(a, b)
%     sum = a + b;
%     disp(sum);        
ii = int64(10099)    
class(ii)    
ff = 10000.0    
class(ff)        
aa = ii/20    
class(aa)    
end

在代码后面加了一个除法,除法的结果类型是?

在这里插入图片描述
**除法的结果,aa还是整形,也就是数据被四舍五入了。并不会默认为double型 **

总结

python代码中,定义a=100,则a的类型为int类型,如果传入matlab时未显示的指明为float,则matlab中的类型为int64,如果定义为a=100.0,则a的类型为float型,则传入MATLAB数据类型为double类型。
所以如果是单值类型的参数传入MATLAB,最好显式指定为float型。

希望对您有帮助。

编辑:myhappyandy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值