【问题标题】:Creating a user-defined function with conditions on input (x,y) in matlab在matlab中创建具有输入(x,y)条件的用户定义函数
【发布时间】:2014-04-16 00:15:02
【问题描述】:

我正在尝试创建一个接受输入 (x,y) 的函数。该函数针对正方形的四个边 x=0, x=1 和 y = 0, y=1 函数值三边为零,第四边=k。我为函数创建了这段代码:

function f = func_bc(x,y)
if x==0 && y>=0
    f = 0;
elseif y==0 && x>=0
    f = 0;
elseif y==1 && x>=0
    f = 0;
elseif x==1 && y>0
    f = k;
end
end

但是,当我使用 feval 将向量作为输入时,这不起作用: x = 网格(0:0.01:1); y = 网格(0:0.01:1); a = feval(func_bc,x(2:101,1),y(2:101,1));

错误是: || 的操作数和 && 运算符必须可转换为逻辑标量值。

如何创建这样的函数?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您应该使用&| 而不是&&||。如果xy 是单标量值,则将使用双运算符。当关系的任一侧是向量时,必须使用单个运算符,如您的情况。

    【讨论】:

    • 感谢大卫,部分问题已解决,但是当将常量值分配给 f 时,这里就是这种情况,它不会创建输出值向量。我通过将 f = 0 写为 f = x-x 解决了这个问题;有没有正式的方法来解决这个问题?
    • 你真的可以把代码分成两行。首先是f=zeros(size(x));,其次是f(x==1 & y>0) = k;
    【解决方案2】:

    将 && 替换为 &。

    【讨论】:

    • 非常感谢,部分问题已解决,但是当将常量值分配给 f 时,这里就是这种情况,它不会创建输出值向量。我通过将 f = 0 写为 f = x-x 解决了这个问题;有没有正式的方法来解决这个问题?
    【解决方案3】:

    这能满足你的需要吗?

    function z = mysquare(x,y)
    k = 10;
    z = zeros(size(x));
    z(x==1 & y>0) = k;
    
    >> [X,Y] = meshgrid(0:0.1:1, 0:0.1:1);
    >> Z = mysquare(X,Y);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-08
      • 2017-04-02
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 2021-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多