我在一门MATLAB课程中遇到过这个问题,老师给出的解决方案是错误的,我已经为同样的问题挣扎了好几个小时,因为我是一个刚开始编码的初学者(这里是一个理科学生)。
考虑一维矩阵A
,如A = \[5 8 8 8 9 9 6 6 5 5 4 1 2 3 5 3 3 \]
。按降序显示矩阵A
中唯一元素的百分比频率。
提示:使用函数tabulate
和sort
。
如何仅使用制表、排序和查找函数来解决此问题(查找函数用于消除制表表中的零频率元素,我的教师没有这样做)?
我首先尝试使用find函数提取制表表的百分比列中的非零元素的索引,我使用以下代码成功地做到了这一点:
A = [5 8 8 8 9 9 6 6 5 5 4 1 2 3 5 3 3 ];
B = tabulate(A);
C = find(B(:,3) > 0)
但是我现在很难使用C中的索引返回对应于B的第3列的值。请帮助我。也请给予我一些替代的语法,人们可以很容易地从一行或一列的非零元素中创建一个向量,如果它存在的话,通过省略该向量中的零来实现。其余的问题我会自己做。
1条答案
按热度按时间nzk0hqpo1#
使用
find
命令,您只是查找矩阵的索引,而不是值本身。所以你要么这样做:
在其中删除0值所在的行。
或者,因为你有所有频率为非零的数字,你可以求出它们所在的行,比如:
B(C(:),:)
将所有具有第一索引的行称为矩阵C的索引。这正是您所要求的。同时,您将基于行3以降序对矩阵进行排序。