I want the code to randomize the rows and present each row for 10 times

조회 수: 2 (최근 30일)
I want the code to randomize the rows and present the stimulus by taking the each row values for 10 times. Here is the code that I have written.
Decentration = [0, 0.5; 0, 0; 0, -0.5; -0.5,0; 0.5, 0];
trial = 10;
for i = 1:trial;
for iter= 1:length(Decentration);
Decentration = Shuffle(Decentration, 2);
XDecentration = Decentration(:,1);
YDecentration = Decentration(:,2);
this presents the stimulus for 50 times but in a different proportion.
Please suggest a code for presenting each row of Decentation to be selected 10 times.
  댓글 수: 1
KALYAN ACHARJYA
KALYAN ACHARJYA 2019년 8월 24일
Can you explain more?
You have Decentration = [0, 0.5; 0, 0; 0, -0.5; -0.5,0; 0.5, 0]; data,
you expectation from the Decentration matrix data?

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2019년 8월 24일
Decentration = [0, 0.5; 0, 0; 0, -0.5; -0.5,0; 0.5, 0];
trial = 10;
n = size(Decentration, 1);
idx = repmat(1:n, 1, trial);
order = randperm(size(idx,2));
randrows = Decentration(order,:);
XDecentration = randrows(:,1);
YDecentration = randrows(:2);
This code will present each row exactly trial times, but not in groups. For example, the second row might happen to occur twice in the first 10 stimuli. Or occur 10 times even (though that is not likely)
This is not the code to present each stimuli exactly once per trial: it is code that preserves the correct portions of entries over the entire experiment but not in the short term.
  댓글 수: 2
Bhagya Lakshmi Marella
Bhagya Lakshmi Marella 2019년 8월 24일
편집: Bhagya Lakshmi Marella 2019년 8월 24일
This code gives error.
Index exceeds matrix dimensions.
Error in Disp_InvGabor (line 77)
randrows = Decentration(order,:);
Walter Roberson
Walter Roberson 2019년 8월 24일
편집: Walter Roberson 2019년 8월 24일
randrows = Decentration(idx(order),:);

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

KALYAN ACHARJYA
KALYAN ACHARJYA 2019년 8월 24일
편집: KALYAN ACHARJYA 2019년 8월 24일
Is this?
decentration = [0, 0.5; 0, 0; 0, -0.5; -0.5,0; 0.5, 0];
random_data=decentration(randperm(size(decentration, 1)),:);
[rows colm]=size(random_data);
trial = 10;
decentration_data=cell(rows,trial);
for i=1:rows
for j=1:trial
decentration_data{i,j}=random_data(i,:);
% I assume you have some process here, like apply stimulus to respective rows
end
end
  댓글 수: 5
Bhagya Lakshmi Marella
Bhagya Lakshmi Marella 2019년 8월 24일
Thank you so much.
It works. But it presents the selected random_data 10 times continuously. I also want this to be random
KALYAN ACHARJYA
KALYAN ACHARJYA 2019년 8월 24일
편집: KALYAN ACHARJYA 2019년 8월 24일
trial=randi(10);
% This generages the random trial number (maximum 10), change it accordingly
Like
trial=randi(maximum_allowable_trail_number);
%....................^^ enter any max number here
Check here examples
>> trail=randi(20)
trail =
16
>> trail=randi(20)
trail =
7
>> trail=randi(20)
trail =
11
Good Wishes!

댓글을 달려면 로그인하십시오.


Bruno Luong
Bruno Luong 2019년 8월 24일
편집: Bruno Luong 2019년 8월 24일
The array B of the below has exactly 10 times each row of A in random order:
m = size(A,1);
B = A(mod(randperm(10*m),m)+1,:);

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by