当使用“下标赋值尺寸不匹配找到“宽容?

1视图(30天)
我的代码会很深入所以我不确定如果发布一切会很有帮助。本质上我用发现与一个公差,以获得两个矩阵之间的常见的数字。分层矩阵和矩阵N_new 884 x884x3 FGIF是801 x2矩阵。我继续在for循环的错误说“下标赋值尺寸不匹配”。Any speculation as to why I would be recieving this error? I have played with the tolerance and it does not make a difference. I am pretty sure that all of the values in FGIF are a part of matrix N within the tolerance specified. I have provided a little code to get an idea of what I am going for.
[FGIF_r, FGIF_c] =大小(FGIF);
托尔= 0.001;
我= 1:FGIF_r
(行(我),(我)上校]=找到(abs (N_new (:,: 2) -FGIF(我,1)< = tol & abs (N_new (:,:, 3) -FGIF(我,2)< = tol);
结束

答案(2)

史蒂文的主
史蒂文的主 2017年8月21日
写,你假设1(没有更多的,没有少)的表达式的元素在 找到 函数调用都是非零的。从你收到一个错误假设似乎是违反了。设置一个 错误断点 和运行您的代码。MATLAB停在错误断点时,运行 找到 与零输出参数的电话,看看俺们输出包含许多元素。
如果你知道 至少1 元素内的表达式 找到 函数调用将非零,你想找到第一个值,调用 找到 两个输入,第二个输入文档(用n)是1。
4评论
沃尔特·罗伯森
沃尔特·罗伯森 2017年8月23日
“有办法告诉matlab期间,如果遇到空集找到只是删除整行吗?”
不。
您可以分配找到临时变量()的输出,和测试在做作业之前的变量。
然而,为了提高效率,而不是做立即删除,最好的跟踪条目保存(或删除),然后循环后,做相应的处理。这也减少了意外丢失的处理一个条目或意外的机会流失最终未能考虑到矩阵的所有条目后被删除的“摔倒来填补这个洞”,Tetris-like。

登录置评。


沃尔特·罗伯森
沃尔特·罗伯森 2017年8月21日
出于测试目的,试一试
[FGIF_r, FGIF_c] =大小(FGIF);
托尔= 0.001;
我= 1:FGIF_r
(行{我},{我}]上校=找到(abs (N_new (:,: 2) -FGIF(我,1)< = tol & abs (N_new (:,:, 3) -FGIF(我,2)< = tol);
结束
我怀疑,你会发现一些条目是空的或者有一个以上的结果。特别是我怀疑你可能有重复的条目在公差内。
我想知道如果你也许应该使用ismembertol ()“byrows”选项。
1评论
安德鲁poisant
安德鲁poisant 2017年8月22日
又会是什么样呢?我读过它但是它输出矩阵的0和1所以我怎么从FGIF矩阵提取相应的值?

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!