0

我是 Matlab 新手,现在正在学习基本语法。

我已经编写了 GetBin.m 文件:

function res = GetBin(num_bin, bin, val)
if val >= bin(num_bin - 1)
    res = num_bin;
else
    for i = (num_bin - 1) : 1
        if val < bin(i)
            res = i;
        end
    end
end

我称之为:

num_bin = 5;
bin = [48.4,96.8,145.2,193.6]; % bin stands for the intermediate borders, so there are 5 bins
fea_val = GetBin(num_bin,bin,fea(1,1)) % fea is a pre-defined 280x4096 matrix

它返回错误:

Error in GetBin (line 2)
if val >= bin(num_bin - 1)

Output argument "res" (and maybe others) not assigned during call to
"/Users/mac/Documents/MATLAB/GetBin.m>GetBin".

谁能告诉我这里有什么问题?谢谢。

4

2 回答 2

2

您需要确保通过代码的每条可能路径都为res.

在您的情况下,情况似乎并非如此,因为您有一个循环:

for i = (num_bins-1) : 1
    ...
end

该循环永远不会迭代(因此它永远不会为 赋值res)。您需要明确指定它是一个递减循环:

for i = (num_bins-1) : -1 : 1
    ...
end

有关详细信息,请参阅有关冒号运算符的文档。

于 2012-06-05T11:56:22.563 回答
0
for i = (num_bin - 1) : -1 : 1
于 2012-06-05T11:57:08.410 回答