[已解决] matlab function问题

[复制链接]
jsfhfu 发表于 2022-11-16 22:10:06
function [PWM5,PWM6,PWM1,PWM8,PWM9,PWM2] = fcn(soc1,soc2,p6,p7)

soc1=soc1*1000;
soc2=soc2*1000;

soc1=int32(soc1);
soc2=int32(soc2);


    PWM5 = 0;           %未开始均衡时,电池1、2、3同时接入
    PWM6 = 0;
    PWM1 = 0;
    PWM8 = 1;
    PWM9 = 0;
    PWM2 = 0;

    Amax = max(soc1,soc2);
    Amin = min(soc1,soc2);
    for (Amax - Amin ~= 0)     %判断均衡开始条件
    {
        if (Amax == soc1)
        {
            PWM5 = p6;           %选择电池1接入
            PWM8 = p6;
            PWM6 = p7;
            PWM1 = p6;
            PWM9 = p7;
            PWM2 = p6;
            }

        else
            {
                PWM5 = p7;           %选择电池2接入
                PWM8 = p7;
                PWM6 = p6;
                PWM1 = p6;
                PWM9 = p6;
                PWM2 = p6;
             }
        end

    end
    PWM5 = 0;           %均衡结束,电池1、2同时接入
    PWM6 = 0;
    PWM1 = 0;
    PWM8 = 1;
    PWM2 = 0;
end
出现double数据类型错误问题

最佳答案


cbcbcbcb 发表于 2022-11-16 22:22:32
本帖最后由 cbcbcbcb 于 2022-11-16 22:27 编辑

for (Amax - Amin ~= 0)这行代码有问题,你应该想用的是while吧。而且我觉得你这个逻辑编的有问题,你这函数调用完后,PWM5 = 0; PWM6 = 0; PWM1 = 0;PWM8 = 1;PWM2 = 0;这些都是固定的,相当于你只是让PWM9的值在改变而已。
回复此楼

3 条回复


cbcbcbcb 发表于 2022-11-16 22:22:32
本帖最后由 cbcbcbcb 于 2022-11-16 22:27 编辑

for (Amax - Amin ~= 0)这行代码有问题,你应该想用的是while吧。而且我觉得你这个逻辑编的有问题,你这函数调用完后,PWM5 = 0; PWM6 = 0; PWM1 = 0;PWM8 = 1;PWM2 = 0;这些都是固定的,相当于你只是让PWM9的值在改变而已。
回复此楼

TouAkira 发表于 2022-11-17 04:50:51
cbcbcbcb 发表于 2022-11-16 10:22
for (Amax - Amin ~= 0)这行代码有问题,你应该想用的是while吧。而且我觉得你这个逻辑编的有问题,你这函 ...

他写的明显是c之类语言的语法,一堆{ },完全没考虑MATLAB跟C在语法上的区别,相当于拿英制单位公式的里的常数套用到公制单位数据去了 :L

cbcbcbcb 发表于 2022-11-17 08:23:04
TouAkira 发表于 2022-11-17 04:50
他写的明显是c之类语言的语法,一堆{ },完全没考虑MATLAB跟C在语法上的区别,相当于拿英制单位公式的里 ...

是呀,楼主他明显两种语法搞混淆了

jsfhfu 发表于 2022-11-17 09:16:09
cbcbcbcb 发表于 2022-11-16 22:22
for (Amax - Amin ~= 0)这行代码有问题,你应该想用的是while吧。而且我觉得你这个逻辑编的有问题,你这函 ...

确实后面的逻辑有问题,应该表达的是上面那种情况不满足时才执行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表