【问题标题】:Matlab says 'find' is not defined in a function [duplicate]Matlab说'find'没有在函数中定义[重复]
【发布时间】:2014-01-17 08:08:19
【问题描述】:

在我的命令窗口中,我可以执行find([0 1 0]),但是当我在函数中运行find 时,如x = find([0 1 0]),编译器告诉我find 没有定义。为什么会这样?

错误是:

??? Error: File: frequentTuples.m Line: 12 Column: 21
 "find" previously appeared to be used as a function or command, conflicting with its
 use here as the name of a variable.
 A possible cause of this error is that you forgot to initialize the
 variable, or you have initialized it implicitly using load or eval.

这是代码。错误发生在for循环的第二行。

function [ tuples ] = frequentTuples( k, candidates, transactions, min_support  )
%FREQUENTTUPLES Get frequent itemsets of size k
%   Detailed explanation goes here

candidate_tuple_is_frequent = zeros(size(candidates, 1));
for i = 1:size(candidates, 1)
    columns_of_candidate_items = transactions(:, candidates(i, :));
    indices_of_transactions_containing_all_items = find(sum(columns_of_candidate_items') == k);
    candidate_tuple_is_frequent(i) = size(indices_of_transactions_containing_all_items) >= min_support;
end

tuples = candidates(find(candidate_tuple_is_frequent, :));

end

【问题讨论】:

  • 你能发布你得到的确切代码和错误信息吗?
  • 我看不出为什么您显示的代码会发生该错误(而且,将来如果您将其包含为代码而不是图片会更好 - 它会复制代码测试相当困难)。只是出于好奇,如果将[0 0 1] 替换为变量,错误是否仍然存在?
  • 我猜测该图像并未显示该函数的所有代码(有些代码也被工具提示隐藏)并且您在某处定义了一个名为find 的函数变量。
  • @horchler:我不相信是这种情况,因为函数的范围显然从第 1 行开始到第 15 行结束。在别处定义的变量不应影响显示的代码。
  • 第 8 行的警告看起来很奇怪。

标签: matlab


【解决方案1】:

啊,我现在看到你的问题了。你在第 13 行有一个放错位置的括号。你有

tuples = candidates(find(candidate_tuple_is_frequent, :));

什么时候应该有

tuples = candidates(find(candidate_tuple_is_frequent), :);

您正在尝试调用 find(candidate_tuple_is_frequent, :),它正在尝试将 find 视为变量。这意味着在函数中对 find 的任何其他调用都会将其视为变量,因此会出现错误。

【讨论】:

    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 2020-10-12
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多