Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB数据索引问题。这是怎么回事?_Arrays_Matlab_Matrix_Data Access - Fatal编程技术网

Arrays MATLAB数据索引问题。这是怎么回事?

Arrays MATLAB数据索引问题。这是怎么回事?,arrays,matlab,matrix,data-access,Arrays,Matlab,Matrix,Data Access,设I为恒等式,D为正交投影,p为向量 我意识到我的几行代码组合成了(I-(I-D))(p),我可以把它简化成D(p)。在替换它时,我将新方法与旧方法一起计算,以重复检查我计算的是相同的东西(在我的代码之前,我有一行是D=I-D。您在这里看到的D是D),我没有得到相同的答案,并将其追溯到索引D中的一个错误 在这里,您可以看到我正在使用调试器,检查D的部分,并返回错误的数据 右边data explorer中的值就是我所期望的值。有时我从d(:,:,k,1)中得到了我所期望的,有时我得不到,甚至当我

I
为恒等式,
D
为正交投影,
p
为向量

我意识到我的几行代码组合成了
(I-(I-D))(p)
,我可以把它简化成
D(p)
。在替换它时,我将新方法与旧方法一起计算,以重复检查我计算的是相同的东西(在我的代码之前,我有一行是
D=I-D
。您在这里看到的
D
D
),我没有得到相同的答案,并将其追溯到索引
D
中的一个错误

在这里,您可以看到我正在使用调试器,检查D的部分,并返回错误的数据

右边data explorer中的值就是我所期望的值。有时我从
d(:,:,k,1)
中得到了我所期望的,有时我得不到,甚至当我一个接一个地进行查询时

这些红色箭头指向的向量应该相同。当第一行运行时,这些行之间没有其他更改或计算,并且
k=2
。我关闭了MATLAB并重新启动它,每次都遇到同样的问题。(D取决于随机输入,但我不会改变种子,所以在新打开MATLAB后,每次运行都会得到相同的结果。
D
的计算方式,我确实希望
D(:,:,1,1)
是单位矩阵。)

世界上发生了什么事?感谢您的帮助

我想知道MATLAB是不是故意和我捣乱。有时当我打开它时,会弹出一个对话框说我需要更新我的学生许可证。我单击“更新”按钮,但什么也没有发生,对话框也永远不会关闭,所以我单击“取消”

编辑:

K>> whos D P
  Name      Size             Bytes  Class     Attributes

  D         4-D               4608  double              
  P         4x1x6              192  double              

K>> size(D)
ans =
     4     4     6     6
我一直在玩
A
B
游戏,我得到了同样的东西。有时计算正确,有时计算不正确

K>> B=permute(P,[1,3,2])
B =
       0.4155      0.27554      0.52338       0.6991     -0.11346      0.20999
      0.53573     -0.83781      0.53182    -0.022364      0.60291     -0.62601
     -0.49246     -0.46111     -0.39168      0.45919      0.42377      0.47074
      0.54574     0.097595      0.53835     -0.54763      0.66637      0.58516


K>> A=D
A(:,:,1,1) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
A(:,:,2,1) =
      0.99071    -0.091198    0.0020814    -0.029755
    -0.091198      0.10503     0.020426       -0.292
    0.0020814     0.020426      0.99953    0.0066643
    -0.029755       -0.292    0.0066643      0.90473
A(:,:,3,1) =
      0.46769     0.019281     -0.49725     0.036486
     0.019281       0.9993     0.018011   -0.0013215
     -0.49725     0.018011      0.53551     0.034083
     0.036486   -0.0013215     0.034083       0.9975
A(:,:,4,1) =
      0.96774     0.063488     -0.10826      0.12438
     0.063488      0.87506      0.21304     -0.24477
     -0.10826      0.21304      0.63673      0.41737
      0.12438     -0.24477      0.41737      0.52047
A(:,:,5,1) =
       0.7542     0.031217      0.42575     0.056052
     0.031217      0.99604    -0.054071   -0.0071187
      0.42575    -0.054071      0.26255    -0.097088
     0.056052   -0.0071187    -0.097088      0.98722
A(:,:,6,1) =
       0.9818     -0.10286     0.085279    0.0034902
     -0.10286      0.41855      0.48208      0.01973
     0.085279      0.48208      0.60031    -0.016358
    0.0034902      0.01973    -0.016358      0.99933
A(:,:,1,2) =
      0.99071    -0.091198    0.0020814    -0.029755
    -0.091198      0.10503     0.020426       -0.292
    0.0020814     0.020426      0.99953    0.0066643
    -0.029755       -0.292    0.0066643      0.90473
A(:,:,2,2) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
A(:,:,3,2) =
      0.97125     -0.15889   -0.0080537    -0.051131
     -0.15889      0.12194    -0.044507     -0.28256
   -0.0080537    -0.044507      0.99774    -0.014323
    -0.051131     -0.28256    -0.014323      0.90907
A(:,:,4,2) =
      0.91488     -0.16388     -0.18495      0.12967
     -0.16388       0.6845     -0.35607      0.24964
     -0.18495     -0.35607      0.59815      0.28174
      0.12967      0.24964      0.28174      0.80247
A(:,:,5,2) =
      0.95461      0.16812      0.10326     0.066372
      0.16812      0.37733     -0.38244     -0.24582
      0.10326     -0.38244      0.76511     -0.15098
     0.066372     -0.24582     -0.15098      0.90295
A(:,:,6,2) =
      0.99628     0.012018     0.052874     0.027665
     0.012018      0.96117     -0.17085    -0.089393
     0.052874     -0.17085      0.24833     -0.39329
     0.027665    -0.089393     -0.39329      0.79422
A(:,:,1,3) =
      0.46769     0.019281     -0.49725     0.036486
     0.019281       0.9993     0.018011   -0.0013215
     -0.49725     0.018011      0.53551     0.034083
     0.036486   -0.0013215     0.034083       0.9975
A(:,:,2,3) =
      0.97125     -0.15889   -0.0080537    -0.051131
     -0.15889      0.12194    -0.044507     -0.28256
   -0.0080537    -0.044507      0.99774    -0.014323
    -0.051131     -0.28256    -0.014323      0.90907
A(:,:,3,3) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
A(:,:,4,3) =
      0.98622     0.043449    -0.066709     0.085142
     0.043449      0.86297      0.21038     -0.26852
    -0.066709      0.21038      0.67698      0.41227
     0.085142     -0.26852      0.41227      0.47382
A(:,:,5,3) =
      0.62859     0.041458      0.47558     0.074661
     0.041458      0.99537    -0.053085   -0.0083339
      0.47558    -0.053085      0.39105      -0.0956
     0.074661   -0.0083339      -0.0956      0.98499
A(:,:,6,3) =
      0.95505     -0.16608      0.12371    0.0067153
     -0.16608      0.38639      0.45705      0.02481
      0.12371      0.45705      0.65956     -0.01848
    0.0067153      0.02481     -0.01848        0.999
A(:,:,1,4) =
      0.96774     0.063488     -0.10826      0.12438
     0.063488      0.87506      0.21304     -0.24477
     -0.10826      0.21304      0.63673      0.41737
      0.12438     -0.24477      0.41737      0.52047
A(:,:,2,4) =
      0.91488     -0.16388     -0.18495      0.12967
     -0.16388       0.6845     -0.35607      0.24964
     -0.18495     -0.35607      0.59815      0.28174
      0.12967      0.24964      0.28174      0.80247
A(:,:,3,4) =
      0.98622     0.043449    -0.066709     0.085142
     0.043449      0.86297      0.21038     -0.26852
    -0.066709      0.21038      0.67698      0.41227
     0.085142     -0.26852      0.41227      0.47382
A(:,:,4,4) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
A(:,:,5,4) =
      0.73864      0.20112    -0.011394      0.39048
      0.20112      0.84524    0.0087678     -0.30047
    -0.011394    0.0087678       0.9995     0.017023
      0.39048     -0.30047     0.017023      0.41662
A(:,:,6,4) =
      0.87322     -0.15647    0.0029936      0.29363
     -0.15647      0.80689    0.0036946      0.36238
    0.0029936    0.0036946      0.99993   -0.0069332
      0.29363      0.36238   -0.0069332      0.31996
A(:,:,1,5) =
       0.7542     0.031217      0.42575     0.056052
     0.031217      0.99604    -0.054071   -0.0071187
      0.42575    -0.054071      0.26255    -0.097088
     0.056052   -0.0071187    -0.097088      0.98722
A(:,:,2,5) =
      0.95461      0.16812      0.10326     0.066372
      0.16812      0.37733     -0.38244     -0.24582
      0.10326     -0.38244      0.76511     -0.15098
     0.066372     -0.24582     -0.15098      0.90295
A(:,:,3,5) =
      0.62859     0.041458      0.47558     0.074661
     0.041458      0.99537    -0.053085   -0.0083339
      0.47558    -0.053085      0.39105      -0.0956
     0.074661   -0.0083339      -0.0956      0.98499
A(:,:,4,5) =
      0.73864      0.20112    -0.011394      0.39048
      0.20112      0.84524    0.0087678     -0.30047
    -0.011394    0.0087678       0.9995     0.017023
      0.39048     -0.30047     0.017023      0.41662
A(:,:,5,5) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1
A(:,:,6,5) =
      0.93556      0.24481   -0.0093576     0.016177
      0.24481     0.069855     0.035553    -0.061461
   -0.0093576     0.035553      0.99864    0.0023492
     0.016177    -0.061461    0.0023492      0.99594
A(:,:,1,6) =
       0.9818     -0.10286     0.085279    0.0034902
     -0.10286      0.41855      0.48208      0.01973
     0.085279      0.48208      0.60031    -0.016358
    0.0034902      0.01973    -0.016358      0.99933
A(:,:,2,6) =
      0.99628     0.012018     0.052874     0.027665
     0.012018      0.96117     -0.17085    -0.089393
     0.052874     -0.17085      0.24833     -0.39329
     0.027665    -0.089393     -0.39329      0.79422
A(:,:,3,6) =
      0.95505     -0.16608      0.12371    0.0067153
     -0.16608      0.38639      0.45705      0.02481
      0.12371      0.45705      0.65956     -0.01848
    0.0067153      0.02481     -0.01848        0.999
A(:,:,4,6) =
      0.87322     -0.15647    0.0029936      0.29363
     -0.15647      0.80689    0.0036946      0.36238
    0.0029936    0.0036946      0.99993   -0.0069332
      0.29363      0.36238   -0.0069332      0.31996
A(:,:,5,6) =
      0.93556      0.24481   -0.0093576     0.016177
      0.24481     0.069855     0.035553    -0.061461
   -0.0093576     0.035553      0.99864    0.0023492
     0.016177    -0.061461    0.0023492      0.99594
A(:,:,6,6) =
     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1

编辑2: 增加了相关代码。我一直在暂停代码,并在最后得到for循环中的错误。(我相信它也会在
s
中给出错误,但我一直在关注
D
试图找出它。)

mtimesx来自


标准化.m

%Normalize
%Accepts an array (of column vectors) and normalizes the columns

function B = Normalize(A)
    B = A./repmat(sqrt(sum(A.*A)),size(A,1),1);
end

问题在于,在第一个示例和用于计算PDist2的代码中,使用常量1而不是变量l(小写l)为矩阵编制索引

一般来说,最好避免使用彼此相似和/或与数字相似的变量名


这可以通过使用一个编辑器来避免,该编辑器突出显示变量和常量使用不同的颜色(我不知道这在MATLAB中是否可行)。事实上,这就是我在你的代码中发现错误的原因。正如您所看到的,在为计算PDist2为D2编制索引时,数字1被涂成红色。

我确信他们没有打扰您。看起来像只虫子。是否正在使用任何
mex
文件?
whosdp
显示了什么?用
A=D(:,:,:,1)试试看
B=P(:,1,:)
如果出现同样的问题,请发布
A
(4 x 4 x 2)和
B
(2D)的值,供我们测试(而不是作为图像)。@Ramashalanka我不确定mex文件是什么,所以可能不是<代码>谁的DP
按预期显示。将很快更新。如果不看代码,很难说太多。@MichaelJ我已经添加了代码。我不确定这是否是问题所在,但在一种情况下,您使用常量1索引D,而在另一种情况下,您使用小写L。在您提供的用于计算PDist和PDist2的代码中也是如此。
%Normalize
%Accepts an array (of column vectors) and normalizes the columns

function B = Normalize(A)
    B = A./repmat(sqrt(sum(A.*A)),size(A,1),1);
end