【问题标题】:Checking size of matrix results in error检查矩阵的大小会导致错误
【发布时间】:2016-01-18 17:12:26
【问题描述】:

错误:

下标索引必须是正整数或逻辑数。

您好,我正在进行图像转换,但在检查矩阵大小时出现错误。我很困惑为什么要使用代码为这个特定实例获取它:

size(maleGrey)

这是我正在运行的代码:

male = getAllFiles('male');

% Variable Initialization
size = 250*250;
numM = length(male);
maleGrey = zeros(size,numM);

% Convert to gray scale
for i = 1:numM
   rgb = imread(char(male(i)));
   img = single(rgb2gray(rgb));
   vec = img(:); % make it a vector of (62500,1) in size
   maleGrey(:,i) = vec; 
end

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    您在调用size=250*250 时错误地使用了size 作为变量。一旦您在工作区中执行此操作,该函数就会被变量屏蔽(重载),并且 Matlab 将始终将进一步调用 size 视为对变量的操作。

    调用clear size,该功能将按预期工作。此外,不要使用 size 作为变量的名称(或其他函数名称,如 length 或 double 或 zeros 等),但例如siz 或 numberOfRows(因为这是你的变量所代表的)。

    【讨论】:

      【解决方案2】:

      您正在(本地)用变量名覆盖 Matlabs 原生函数引用 size

      % Variable Initialization
      size = 250*250; % <--
      

      因此,当您调用 size(maleGrey) 时,它会将 maleGrey 视为变量 size 中的索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-14
        • 2017-07-07
        • 1970-01-01
        相关资源
        最近更新 更多