【问题标题】:MATLAB Function Elements RangeMATLAB 函数元素范围
【发布时间】:2013-01-20 22:42:34
【问题描述】:

抱歉这个菜鸟问题,但我是 MATLAB 的初学者。我需要执行以下任务,但被卡住了。 “编写一个接受三个参数 x、a、b 的函数,其中 x 是一个矩阵,a 和 b 是标量。该函数返回 x 中位于区间 [a, b] 中的元素数。”这是我目前所拥有的。

function y = count(x,a,b);
for value=a:b
    length(value)
end

我需要在命令提示符下使用以下行调用该函数:

count(randn(20, 20), 0, 5)

但是,我没有得到任何接近正确答案的东西。谁能指出我正确的方向?谢谢。

【问题讨论】:

  • 您是否尝试过编写类似x<b 的内容(用数字替换b)?看看结果,这会让你更接近。
  • 我不确定你在说什么,它是否涉及嵌套的 if 语句?
  • @ShankarKumar:不,试试x = randn(5, 5) 然后x > 1
  • @DSM:你是说要改变命令行吗?我需要保持现状(它是提供给我们的)。我需要更改第一个框的最后三行中的代码以适应该命令。 :(
  • 您可以进一步简化一点,只需使用一次sum,即使用(:) 语法将矩阵转换为向量。 total_sum = sum(new_array(:))

标签: function matlab range


【解决方案1】:

正如 Jonas 建议的那样,nnzsum 是比 numel(find(...)) 更快的选项,sum 是最快的,因此:

function y = count(x,a,b);
y = sum(x(:)>a & x(:)<b);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    相关资源
    最近更新 更多