【问题标题】:for loops for functions in matlabmatlab中函数的for循环
【发布时间】:2016-08-12 22:05:21
【问题描述】:
f1=@(x) x-2;
f2=@(x) x;
f3=@(x) x+2;

for i=1:3
    if fi(0)<0
        f2(3)
    else
        f3(3)
    end
end

预期的答案是 3,5,5,但是当我在 matlab 中运行代码时,我得到 5,5,5

【问题讨论】:

  • 我认为您的意思是在某处使用i。并且fi 没有定义。
  • fi(0)&lt;0 ,这个条件是假的并且不依赖于循环的迭代。 ‍‍‍‍‍‍ ‍‍‍‍‍‍fi(0)返回0,条件0&lt;0为假
  • 您可能希望将if fi(0)&lt;0 更改为:if f1(i)&lt;0
  • @Sardar_Usama fi 是什么? (我的意思是,它甚至没有定义,为什么 fi(0) 返回 0?你是怎么得到的?)
  • 你知道,这就是我喜欢 stackoverflow 的地方。出于一个愚蠢的问题(没有冒犯,OP :p)可以得出这样的拖延宝石。现在我正在阅读嵌入式处理器中的定点算术! xD

标签: matlab if-statement for-loop


【解决方案1】:

大概是你的意思

>> f1 = @(x) x - 2;
>> f2 = @(x) x;
>> f3 = @(x) x + 2;

>> for i = 1 : 3
     if f1(i)<0; f2(3), else; f3(3), end;
   end
ans =  3
ans =  5
ans =  5

对吗?

【讨论】:

    【解决方案2】:

    也许你想做向量而不是使用循环

    f1=@(x) x-2;
    f2=@(x) x;
    f3=@(x) x+2;
    f=@(x) (f1(x) < 0).*(f2(3)) + (f1(x) >= 0).*(f3(3))
    f(1:3)
    
    ans =
    
         3     5     5
    

    【讨论】:

    • 因为我不能投票给你的答案,所以我在这里输入 thnx
    猜你喜欢
    • 1970-01-01
    • 2011-08-05
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多