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);

 

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