该解决方案在R2015A或R2015B上不起作用。似乎是CircShift的行为发生了变化。例如,R2015B上的CIRCSHIFT(稀疏(逻辑([1 2 3])),[0 1]返回所有零。
嗨彭,似乎在2014年介绍了对CIRCSHIFT的最后一次重大变化(补点补充)。我无法查看此版本,2015A也返回FALSES。无论如何,(不是)好的错误:)。
嗨Jan,我也没有2014A。但我能够在这里核实2013A:http://anycodes.cn(在左侧,您可以选择运行MATLAB)。在CIRCSHIFT(稀疏(逻辑(逻辑([1 2 3])),[0 1])和CIRCSHIFT(稀疏(+逻辑([1 2 3])),[0 1])在2015A和2015B上产生不同的输出,它们在2013A上给出相同的结果(最多达到一个类别)。
这绝对是一个错误。似乎最新版本的Cirsprift不正确处理稀疏的逻辑矩阵。它以某种方式改变了对falses的特征,但像非安利斯一样对待他们。这导致一些有趣的逻辑属性,因为稀疏矩阵工作的算法的方式。检查以下代码:a = Cirsshift(稀疏([假误真为True]),[0 1]);A,非安利斯(A);完整(a),a | 1,a&1,〜a,xor(a,1),xor(a,0)和(a,a),或(a,a),a == ~~ a,isequal(a,~~ a),含量等(a | 0,a),%(等);
b =稀疏([假误真为false]);B,B = B([结束1:结束-1]),......
这是我最喜欢的:
C = Cirspstift(稀疏(真),1);
哈哈,这绝对是一个有趣的例子,可以在处理稀疏逻辑矩阵时详细说明快速/稀疏的不正确行为。我同意你这是一个错误,但仍然不太确定错误是由于CIRSPRIFT或稀疏。也许有人可以向MathWorks报告这个错误......