matlab生成网格数组,然后随机选出固定数目的网格点

clear all
clc
% 生成网格点,然后转换为二维数组
mesh_point_numer = 10
left = -1;
rigth = 1;
mesh_step = 2.0/mesh_point_numer;
x = -1:mesh_step:1;
y = -1:mesh_step:1;

% 生成不带边界的网格点
[meshX,meshY] = meshgrid(x(2:1:end-1),y(2:1:end-1));
X_mesh = meshX(:);      % 矩阵变向量 
Y_mesh = meshY(:);
meshXY(1,:)=X_mesh';
meshXY(2,:)=Y_mesh';
plot(meshXY(1,:),meshXY(2,:),'*')

% 以下为从meshXY中随机的选取某些网格点,按由小到大的顺序随机选取
M = size(meshXY, 2);
sort_array = 1:M; %生成 1——100的递增整型数组(由小到大的顺序)
zeros_one_array = randi([0 1],1, M); %生成 100个 0-1 随机数组
slide_array = sort_array.*zeros_one_array; % 随机确定要选网格点的位置
mesh_sample = meshXY(:,slide_array~=0);     % 列数上,不等于0的位置的元素选出来

% 以上程序生成的0-1数目不是固定的,如果生成固定数目的0,或者1,如下操作
k=30;%自己改 
slides=randi([1,M], 1, M); 
slides(randperm(M)<=k)=1;
mesh_slide = meshXY(:,slides==1);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章