Problem 39. Which values occur exactly three times?

Cody 上的Problem 39:

function y = threeTimes(x)
  [m,n] = hist(x,unique(x));
  y = n(find(m == 3));
end

简单百度了之后这样打的代码,size有27。因为比较懒,有了结果了就不想再思考…
matlab里有很多好用的函数,然而在solutions里总会看到有人用for、if、while写代码,麻烦一些但好像有的更可读,不知道这样是否更利于学编程


解释一下:

unique函数 去掉矩阵中重复的元素

  • C = unique (A) 获取矩阵A的不同元素构成的向量
    returns the same data as in A, but with no repetitions.

    >> >> A = [9 2 9 5];
    >> >> C = unique (A)
    C =
              2     5     9

  • C = unique (A, 'rows') 获取矩阵A的不同行向量构成的矩阵
    treats each row of A as a single entity and returns the unique rows of A. The rows of the array C are in sorted order.
    The ‘rows’ option does not support cell arrays.

  • [C,ia,ic] = unique (A)
    ia为矩阵C中的元素在矩阵A中的位置,ic为矩阵A中的元素在矩阵C中的位置

    • If A is a numeric array, logical array, character array, categorical array, or a cell array of strings, then C = A(ia) and A = C(ic).

    • if A is a table, then C = A(ia, :) and A = C(ic, :).

  • [C,ia,ic] = unique (A, 'rows')
    also returns index vectors ia and ic, such that C = A(ia, :) and A = C(ic, :).

    >> >> A = [1 2;6 1;1 2];
    >> >> [C, ia, ic] = unique (A, ‘rows’)
    C =
              1           2
              6           1
    ia =
             1
             2
    ic =
             1
             2
             1

hist函数 用来画直方图

[m, n] = hist (y, x)
x是预先给定的区间,y是输入的数据。
输出n为相应的值,m为对应n在y中出现的个数。

y = [1 3 2 2 1 5];
x = [1 3 4 5];
[m, n] = hist (y, x)
m =
         4   1   0   1
n =
         1   3   4   5


Problem 39. Which values occur exactly three times?_第1张图片

y = [1 3 2 2 1 5];
x = [1 2 3 5];
[m, n] = hist (y, x)
m =
         2    2    1    1
n =
         1    2    3    5


Problem 39. Which values occur exactly three times?_第2张图片

x为unique(y)的时候,输出的n就是y中不重复的值,m是y中各个n的个数。


会设置图片大小了T T,开心。

你可能感兴趣的:(matlab,learning,matlab)