如何解决八度音阶中唯一符号的问题
我在 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 举报,一经查实,本站将立刻删除。