微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

八度音阶中唯一符号的问题

如何解决八度音阶中唯一符号的问题

我在 Windows 10 专业版上使用 Octave 6.2。 以下两个代码片段不言自明:

syms a b;
 unique([a,b])
 ans = (sym) [a  b]  (1x2 matrix)

好久不见。

但是

unique([a])
error: Python exception: UnboundLocalError: local variable 's' referenced before assignment
occurred at line 1 of the Python code block:
return sp.Matrix([list(uniq(*_ins))]),error: called from
pycall_sympy__ at line 178 column 7
unique at line 55 column 5

我做了一个丑陋的解决方法,但它当然会减慢计算时间。 有人有同样的问题吗? 有什么建议吗?

解决方法

我的解决方法是以下代码:

function un=mifUnique(rowcol)
  if isempty(rowcol)
    un=[];
  elseif
    ~isvector(rowcol)
    un=mitSetupError("un=mifUnique(rowcol): 'rowcol' has to be a vector.");
  else
    rowcol(end+1)=rowcol(1);
    un=unique(rowcol);
  endif
endfunction

*** 编辑:更简单灵活的是:

function unque=mifUnique(unque)
  if numel(unque) < 2
    return
  else
    unque=unique(unque);
  endif
endfunction

不仅支持向量,还支持任何维度。

*** END_EDIT

直到现在我都不知道函数finiteset。非常感谢! 但是如何在没有 eval 函数的情况下使用有限集来测试一组符号?

finiteset ([a,a,b])
ans = (sym) {[a  a  b]}

fs=finiteset ([a,b](:))
fs = (sym)

   [a]
   [ ]
  {[a]}
   [ ]
   [b]

>> typeinfo (fs)
ans = class

那不是我想要的。

编辑:对不起,我应该把'finteset'的帮助读到最后

另一方面,如果您想要从 一个矩阵,首先将其转换为元胞数组: A = [1 x 1; 2 1 x]; 有限集(num2cell(A))。

现在我将测试,哪种方法工作得更快。会尽快发布吗。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。