MATLAB执行max()函数出错:下标索引必须为正整数类型或逻辑类型

MATLAB执行max()函数出错:下标索引必须为正整数类型或逻辑类型

       使用MATLAB的max()函数求一列double类型数据的最大值时出现错误:下标索引必须为正整数类型或逻辑类型。下面是部分MATLAB代码:

    frid = fopen(infile(i).name, 'rt');
    fwid = fopen(outfile, 'a+');
    A = textscan(frid, '%d %d %d %f');
    B = A{4};
    maxval = max(B);

        当时一直搞不懂错误原因是什么。一开始以为是B这个参数有问题,但是看MATLAB参考手册的时候发现是可以这么用的。后面使用clear清除变量的时候再执行类似的代码就成功了,于是我想应该是变量的问题。

        细心的同学可能注意到,最后一行左边的变量max和右边的函数max重名了!对,这就是错误发生的原因。第一次执行的时候没有max变量,所以max()函数可以正确执行。随着第一次执行完成max变量生成,再次执行max()函数的时候,此时执行的不是MATLAB自带的max()函数,而是会去使用第一次生成的变量max。并且变量max在这边不是作为函数,而是作为一个数组,所以右边的应该是下标索引(正整数类型或逻辑类型),但是B并不是这样的类型。所以会报错:下标索引必须为正整数类型或逻辑类型。

        解决办法也很简单,只要将报错行等号前面的变量max改个不与函数max()重名的变量名就可以了,比如maxval。

        本人初步接触matlab,所以会犯一些比较低级的错误。记录下来,以提醒自己。奋斗

  • 48
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值