MATLAB Answers

0

Reducing a vector size when it is being updated in a loop

Hans123 님이 질문을 제출함. 27 Mar 2019
최근 활동 Catalytic 님이 댓글을 추가함. 28 Mar 2019
Hi,
I have a vector A that is being updated in a loop, A contains data from a Trial, and the length of it changes with each iteration. I want to make the length of each A the same so the plots are of the same size.
Trial 1 length = 497 x 12, Trial 2 length = 700 x 12 ... Trial 5 length = 687x12 ( I want to get a 497x12 vector for all trials)
I currently have this piece of code, which find the smallest length of the A - the problem is the line of code that the smallest length out is inside the loop and after each iteration it changes.
The smallest number is a hint to how long the array A should be, since it varies for each trial uploaded.
I hope the below code helps
smallest = 10000;
for h=1:5
%code to load all script files
if h==1
A = dlmread("Trial 1");
elseif h==2
A = dlmread("Trial 2");
elseif h==3
A = dlmread("Trial 3");
elseif h==4
A= dlmread("Trial 4");
elseif h==5
A= dlmread("Trial 5");
end
[x , y] = size(A);
if x<smallest
smallest = x; %the smallest length of rows for A
end
...
end

  댓글 수: 0

로그인 to comment.

태그

답변 수: 1

Answer by Catalytic
on 27 Mar 2019
Edited by Catalytic
on 27 Mar 2019
 Accepted Answer

for h=5:-1:1
%code to load all script files
if h==1
A = dlmread("Trial 1");
elseif h==2
A = dlmread("Trial 2");
elseif h==3
A = dlmread("Trial 3");
elseif h==4
A= dlmread("Trial 4");
elseif h==5
A= dlmread("Trial 5");
end
Acell{h}=A;
end
smallest = min( cellfun(@(c) size(c,1), Acell) );
Ashort=cellfun(@(c)c(1:smallest,:) , Acell,'uni',0);
for i=1:numel(Ashort)
figure(i); plot(Ashort{i});
end

  댓글 수: 4

표시 이전 댓글 수: 1
what does Acell{h}=A do
It stores A in Acell{h}.
Undefined function or variable 'Acell'.
Shouldn't happen. Did you copy/paste my code? In any case try re-pasting.
Thanks the code works well, inorder to extrapolate the data from the cell so I can use them in my calculations should I use the function celltomat?
No, just grab whichever data set you need by indexing, as in Acell{i}.

로그인 to comment.



Translated by