数组具有与此操作不兼容的大小

Arrays have incompatible sizes for this operation

function r = fun(x, params, type)
    h = @(x) x(1)-x(8);
    x= sym('x',[1,8]);

    gamma = 16;

    if type == 'linear'
        r = gamma*h(x);
    elseif type == 'sin'
        r = gamma*sin(h(x));
    end
    
end

当我 运行 这个函数用于类型 'sin' 时,我总是得到这个错误

Arrays have incompatible sizes for this operation.

Error in fun (line 7)
    if type == 'linear'

如何解决这个问题?

我只是一个传递类型并根据它创建我的输出,我虽然字符串可能没问题,但它不起作用。

我想在线性情况下将我的函数句柄与 gamma 相乘,在正弦情况下乘以 sin。

你的意思可能是

if strcmp(type,'linear')

type是一个char数组,matlab不支持那种直接数组到数组比较的文本。它尝试将每个字母相互比较,但如果 length(type)length('linear') 不同,则会出错。