Быстрая рабочая попытка, ее можно оптимизировать, но тогда потребуется еще несколько деталей: сколько итераций вы выполняете? есть ли условия для поломки? Будете ли вы всегда использовать три матрицы для подачи Fdata?
Вот рабочий пример кода:
function Fdata=buildFdata
A=rand(5,5);
B=rand(2,5);
C=rand(3,5);
selectedA=[];
selectedB=[];
selectedC=[];
n=max([size(A,1) size(B,1) size(C,1)]);
Fdata=zeros(3*n,5);
for i=1:3:3*n-2
[Fdata,A,selectedA]=randomfeed(Fdata,A,selectedA,i);
[Fdata,B,selectedB]=randomfeed(Fdata,B,selectedB,i+1);
[Fdata,C,selectedC]=randomfeed(Fdata,C,selectedC,i+2);
end
end
function [Fdata,Mat,selectedMat]=randomfeed(Fdata,Mat,selectedMat,i)
if(~isempty(Mat))
index=randline(size(Mat,1));
Fdata(i,:)=Mat(index,:);
selectedMat(end+1,:)=Mat(index,:);
Mat(index,:)=[];
else
index=randline(size(selectedMat,1));
Fdata(i,:)=selectedMat(index,:);
end
end
function n=randline(nlines)
if(nlines==1)
n=1;
else
n=randi(nlines-1)+1;
end
end