Matlab 如何创建仅用于计算向量中奇数和的倍频程函数?
我在八度音阶上创建了一个函数文件Matlab 如何创建仅用于计算向量中奇数和的倍频程函数?,matlab,octave,Matlab,Octave,我在八度音阶上创建了一个函数文件 function y = sum_odd(n) if rem(n,2) ==1 sum_odd = sum(n) endif endfunction 我想让函数计算每个向量中奇数的和。 但当我尝试求和(sum_-odd)([1,2,3])时,它并不适合我 有没有解决此问题的方法?您只需使用: rem([1 2 3],2)==1)返回逻辑数组:[1 0 1] n(逻辑([1 0 1])返回[1 3]` su
function y = sum_odd(n)
if rem(n,2) ==1
sum_odd = sum(n)
endif
endfunction
我想让函数计算每个向量中奇数的和。
但当我尝试求和(sum_-odd)([1,2,3])时,它并不适合我
有没有解决此问题的方法?您只需使用:
返回逻辑数组:rem([1 2 3],2)==1)
李>[1 0 1]
[1 3]`李>n(逻辑([1 0 1])返回
返回sum(n(rem([1 2 3],2)==1))
的和李>[1 3]
返回逻辑数组:rem([1 2 3],2)==1)
李>[1 0 1]
[1 3]`李>n(逻辑([1 0 1])返回
返回sum(n(rem([1 2 3],2)==1))
的和李>[1 3]
end
而不是endif
或endfunction
;您正在分配给函数名sum_odd
,而不是返回变量y
;在matlab中,函数为mod
notrem
。此外,这显然也是你要回答的一个指导性问题,因此如果我们只是给你答案,它不会真正帮助你。matlab有很多很好的在线文档,请尝试“使用逻辑值索引”@euransith,很抱歉误解了您的意思。我指的是八度音阶,不是Matlab。语言是相似的。啊,好的。但是,使用逻辑值进行索引仍然是您需要的参考-这两者都是相同的。@Eupransith:mod
和rem
都存在于MATLAB中,并且不做相同的事情。@CrisLuengo确实如此。我已经查过了。但是endif
不在matlab中,分配给sum_odd
是不正确的。很明显,您只是在学习matlab,并且来自不同的语言-这里有一些基本语法问题:只需使用end
而不是endif
或endfunction
;您正在分配给函数名sum_odd
,而不是返回变量y
;在matlab中,函数为mod
notrem
。此外,这显然也是你要回答的一个指导性问题,因此如果我们只是给你答案,它不会真正帮助你。matlab有很多很好的在线文档,请尝试“使用逻辑值索引”@euransith,很抱歉误解了您的意思。我指的是八度音阶,不是Matlab。语言是相似的。啊,好的。但是,使用逻辑值进行索引仍然是您需要的参考-这两者都是相同的。@Eupransith:mod
和rem
都存在于MATLAB中,并且不做相同的事情。@CrisLuengo确实如此。我已经查过了。但是,endif
不在matlab中,并且分配给sum_odd
是不正确的
function y = sum_odd(n)
y = sum(n(rem(n,2)==1))
end