matlab-function程序运行问题

function [beta,f] = fcn(u0,u,tf)
    beta_limit = [0, 1];
    beta = beta_limit(1) + (beta_limit(2) - beta_limit(1)) * rand(15, 1); 
    y6= integral ( @(t) ((u0+(u-u0)*(t/tf).^beta)*229.5/8584)+((u0+(u-u0)*(t/tf).^beta).*(733*beta*(u-u0)/tf.*(t/tf).^(beta-1))/8584)+((u0+(u-u0)*(t/tf).^beta).*(0.035*(u0+(u-u0)*(t/tf).^beta).^2)/8584),0,tf,'ArrayValued',true);
    y7= integral ( @(t) (u0+(u-u0)*(t/tf).^(beta))/3600,0,tf,'ArrayValued',true);
    f=y6./y7;

img

img


在matlab-function里编写以上代码,模块搭建如上,运行报警告,请问这个警告怎么解决,另外beta给的是一组随机数,为啥运行时,这一组数一直在改变,请问如何解决这个问题。

【相关推荐】



  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7655482
  • 你也可以参考下这篇文章:matlab数组索引必须为正整数或逻辑值,错误解决办法
  • 您还可以看一下 苏金明老师的MATLAB复变函数课程中的 复数运算-复数的乘除法、指数运算和对数运算小节, 巩固相关知识点
  • 除此之外, 这篇博客: MATLAB 基础知识 数据类型 运算符和基本运算 查找符合条件的数组元素中的 替换符合条件的值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    有时,同时更改多个现有数组元素的值会很有用。将逻辑索引与简单的赋值语句一起使用,可替换数组中符合条件的值。

    将 A 中大于 10 的所有值替换为数值 10。

    A(A>10) = 10
    A = 5×5
    
        10     2     3     3    10
        10     5    10     7     1
         2     9    10    10    10
        10    10     8    10    10
        10    10    10    10    10
    

    然后,将 A 中不等于 10 的所有值替换为 NaN 值。

    A(A~=10) = NaN
    A = 5×5
    
        10   NaN   NaN   NaN    10
        10   NaN    10   NaN   NaN
       NaN   NaN    10    10    10
        10    10   NaN    10    10
        10    10    10    10    10
    

    最后,将 A 中的所有 NaN 值替换为 0,并应用逻辑 NOT 运算符 ~A。

    A(isnan(A)) = 0;
    C = ~A
    C = 5x5 logical array
    
       0   1   1   1   0
       0   1   0   1   1
       1   1   0   0   0
       0   0   1   0   0
       0   0   0   0   0
    

    生成的矩阵用逻辑值 1 (true) 取代 NaN 值,用逻辑值 0 (false) 取代 10。逻辑 NOT 运算 ~A 将数值数组转换为逻辑数组,因此 A&C 返回逻辑值 0 (false) 的矩阵,A|C 返回逻辑值 1 (true) 的矩阵。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^