毕设ing,最近每天除了读论文以外都是matlab模拟。
MATLAB编程强调“vectorization”,操作矩阵(本来人的名字是MATLAB,矩阵的实验室) )。
关于数组组合问题,c语言的想法中一定要使用for循环。 但是,在matlab中,for循环并不好吃。 一个个的for循环嵌套在一起,没有括号…看了很头晕。 更简单、更高效的方法是usingvectoroperationsinsteadofloops。 有关详细信息,请参阅improvingthespeedofmatlabcalculations
下面是一些关于我自己使用的数组组合的函数。 啊,真的很简单。
用向量x重复选择y个元素
在百度上找了又改,可以重复选择要素。 也就是说,也包括111,222这样的东西。 缺点是输入只能是向量,不能输入矩阵
功能y=perm _ comb (x,y ) )。
[ y { y :-1:1 } ]=nd网格(x );
y=reshape(cat(y1,y65: ) ),[],y );
在二维坐标中选择n个坐标点
x、y是x、y轴的最大值,NP表示选择了几个点,函数输出所有坐标点
函数co=选择代码(x,y,NP ) )。
[令人担心的羽毛]=meshgrid(1:x,1:y );
co=[reshape(y(x,NP,1 ) reshape,NP,1 ) ]
网格函数用于生成坐标网格点矩阵,输出两个矩阵。 一个是所有点的x坐标,另一个是所有点的y坐标。 此坐标系上的所有点都由这两个矩阵的所有元素表示。 例如,第一行的第一列的坐标是[ a (1,1 ),b () 1,1 ) ],第二行的第一列(a ),2 ),b ) ),1,2 )……
还有Nchoosek(A,b ):a可以是向量,也可以是数字。 对于向量,输出b列矩阵,如果表示可能从a向量中选择b个元素的所有组合的a是数字,则输出C(A,b )的计算结果。