Not splitting correctly?

Hi I have a DNA sequence that I am trying to randomise 1000 times and then store each result in a cell array. The randomisation and storing works fine, but then for each new R i want to split it up into chunks using R_split(X,:)=R(X:X+(n-1)) which i have previously used to split a sequence up into chunks and works fine. But this code at the moment just splits the 1000 results of R into two columns of 500 instead, can anyone help please?
S=1000
R=cell(1,S);
N_R=floor(length(R)/n)
for H=1:S;
L=randperm(length(DNA_H));
M=DNA_H(L);
R{1,H}=M;
for X=1:N_R
R_split(X,:)=R(X:X+(n-1))
end
end

1 comentario

Jan
Jan el 13 de Dic. de 2016
You tell us, what the code does, but not, what you want it to do. We do not have the data and cannot run your code. I do not see the meaning of the X loop.

Respuestas (1)

Guillaume
Guillaume el 13 de Dic. de 2016

0 votos

Any reason that R is a cell array instead of a S*numel(DNA_H) matrix?
The problem with your algorithm is that R_Split does not depend on H, so you overwrite it at each step of the H loop. It's not clear what you're trying to do with the X loop.
At a guess:
dna = 'ATGC';
DNA_H = dna(randi(4, 1, 200)); %demo data
S = 1000;
R = DNA_H(cell2mat(arrayfun(@(~) randperm(numel(DNA_H)), (1:S).', 'UniformOutput', false))); %create a matrix instead of cell array
n = 2;
N_R = floor(size(R, 1) / n);
splitrows = ones(1, n) * N_R;
leftover = mod(size(R, 1), n);
if leftover
splitrows = [splitrows, leftover];
end
R_split = mat2cell(R, splitrows, size(R, 2))

La pregunta está cerrada.

Preguntada:

el 13 de Dic. de 2016

Cerrada:

el 20 de Ag. de 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by