Matlab 输出不是我想要的

Matlab 输出不是我想要的,matlab,Matlab,我的问题是: 我有一个矩阵2888x16,我想用它计算一些条件 我希望结果出现在一个新的矩阵中,该矩阵遵循以下条件: 值低于3时,我的输出必须等于0(零) 值大于13,我的输出必须是2050 最后一个条件是,3到13之间的值遵循复杂的 代码中显示的方程式 问题是: 当我运行代码时,只计算最后一个'else'。不计算第一个'if'和'elseif' 这是我的密码: for i = 1:iw; ii=1:16; if w_speed80_win(i,ii) < 3

我的问题是:

我有一个矩阵
2888x16
,我想用它计算一些条件

我希望结果出现在一个新的矩阵中,该矩阵遵循以下条件:

  • 值低于3时,我的输出必须等于0(零)
  • 值大于13,我的输出必须是2050
  • 最后一个条件是,3到13之间的值遵循复杂的 代码中显示的方程式
问题是:

当我运行代码时,只计算最后一个
'else'
。不计算第一个
'if'
'elseif'

这是我的密码:

    for i = 1:iw;
    ii=1:16;

    if w_speed80_win(i,ii) < 3;
        eout_win(i,ii) = 0;
    elseif w_speed80_win(i,ii) >= 13;
        eout_win(i,ii) = 2050;
    else
        eout_win(i,ii) = (0.13966*(w_speed80_win(i,ii).^5))-(6.1113*(w_speed80_win(i,ii).^4))...
            +(97.045*(w_speed80_win(i,ii).^3))-(676.62*(w_speed80_win(i,ii).^2))+(2193.5*w_speed80_win(i,ii))-2632.2;
    end
end
i=1时的
:iw;
ii=1:16;
如果w_speed80_赢(i,ii)<3;
OUT_win(i,ii)=0;
如果w_speed 80_win(i,ii)>=13;
欧特温(i,ii)=2050;
其他的
欧文(i,ii)=(0.13966*(w_speed80_win(i,ii)。^5)--(6.1113*(w_speed80_win(i,ii)。^4))。。。
+(97.045*(w_speed80_win(i,ii)。^3)-676.62*(w_speed80_win(i,ii)。^2)+(2193.5*w_speed80_win(i,ii))-2632.2;
结束
结束

保持矢量化可能更简单:

eout_win = (0.13966*(w_speed80_win.^5))-(6.1113*(w_speed80_win.^4))...
            +(97.045*(w_speed80_win.^3))-(676.62*(w_speed80_win.^2))+(2193.5*w_speed80_win)-2632.2;
eout_win(w_speed80_win<3)=0
eout_win(w_speed80_win>=13)=2050
这将为您提供低于3的值的索引。

尝试以下操作:

ind_LT_3 = w_speed80_win < 3 ;
ind_GT_13 = w_speed80_win > 13 ;
ind_REST = ~(ind_LT_3 | ind_GT_13 ) ;
w_speed80_win(ind_LT_3 ) = 0;
w_speed80_win(ind_GT_13 ) = 2050;
w_speed80_win(ind_REST ) = (0.13966*(w_speed80_win.^5)) - ..
ind_LT_3=w_speed 80_win<3;
ind_GT_13=w_speed 80_win>13;
ind_REST=~(ind_LT_3 | ind_GT_13);
w_speed 80_win(ind_LT_3)=0;
w_speed 80_win(ind_GT_13)=2050;
w_speed 80_win(ind_REST)=(0.13966*(w_speed 80_win.^5))-。。

代码似乎没有问题,可能是数据满足了其他条件。。这是我代码中的一个改进。非常感谢。不幸的是,现在出现了另一个错误。这是你建议的我的新代码。ind_LT_3=w_speed 80_win<3;ind_GT_13=w_speed 80_win>13;ind_REST=~(ind_LT_3 | ind_GT_13);Out_win(ind_LT_3)=0;欧温(ind_GT_13)=2050;出局赢(ind_REST)=(0.13966*(w_speed80_win.^5))。。。在赋值A(I)=B中,B和I中的元素数必须相同。临时文件(第65行)Out_win(ind_REST)中出错=(0.13966*…我的OUT_win,在前两个条件下的大小是1x46208,而不是2888x16。我发现了我的错误!代码现在可以正常工作了!非常感谢!:DYou是对的!我是一个“noob”,我能做的最糟糕的事情是使代码复杂化。您的解决方案更简单,效果更好。非常感谢!
ind_LT_3 = w_speed80_win < 3 ;
ind_GT_13 = w_speed80_win > 13 ;
ind_REST = ~(ind_LT_3 | ind_GT_13 ) ;
w_speed80_win(ind_LT_3 ) = 0;
w_speed80_win(ind_GT_13 ) = 2050;
w_speed80_win(ind_REST ) = (0.13966*(w_speed80_win.^5)) - ..