You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Matlab报错‘Size inputs must be integers’:创建同尺寸矩阵求助

解决MATLAB中ones()尺寸非整数的报错问题

嘿,我来帮你搞定这个报错~

首先咱们先搞清楚报错的根源:你的img2宽度是235,当你写size(img2,2)/2时得到的是117.5,这不是整数,而MATLAB的ones()zeros()函数要求传入的尺寸参数必须是正整数,所以就触发了这个错误:

Error using ones Size inputs must be integers

而且你的原代码逻辑其实会生成一个比img2更宽的矩阵(235+117.5列),这和你想要创建与img2同尺寸矩阵的需求不符,咱们得调整一下写法。

下面给你两种实用的解决方案:

方法一:用取整函数适配任意尺寸的图像

如果想把矩阵分成左右两部分,左边为0、右边为1,且总尺寸和img2完全一致,可以用取整函数来计算分割的列数:

  • 若希望右边的1部分列数更少(下取整):

    half_col = floor(size(img2,2)/2); % 针对235的宽度,得到117
    r = [zeros(size(img2,1), size(img2,2)-half_col), ones(size(img2,1), half_col)];
    

    这样左边是118列0,右边是117列1,总宽度刚好235,和img2一致。

  • 若希望右边的1部分列数更多(上取整):

    half_col = ceil(size(img2,2)/2); % 针对235的宽度,得到118
    r = [zeros(size(img2,1), size(img2,2)-half_col), ones(size(img2,1), half_col)];
    

    这种情况下左边117列0,右边118列1,总宽度同样是235。

方法二:手动指定整数尺寸(适合固定尺寸的图像)

因为你已经明确知道img2的尺寸是[111 235],也可以直接写死整数参数,这样更直观:

r = [zeros(111, 118), ones(111, 117)];

不过这种方法的缺点是如果后续img2的尺寸发生变化,你得手动修改数字,灵活性不如第一种方法。

内容的提问来源于stack exchange,提问作者Youbaa Baba

火山引擎 最新活动