Extracting data from a 'for' loop
이전 댓글 표시
I have the following input file 'Test_14-Dec-2018.xls' attached
This is my code:
clc;
clear;
dataset = xlsread('Test_14-Dec-2018');
A = dataset(:,1:8);
B = A(A(:,1)==10,:); %for a=10s
k=1;
C=cell(1,4);
for p = 1:4
j=p*9;
i=j-8;
C{k} = B(i:j,:);
d=cell2mat(C);
x = d(:,2);
k=k+1;
end
Basically what the code does is extract that data into the matlab workspace and selects the data only when the first column has '10' data.
In the for loop, every 9 rows are selected and assigned a cell so that I have 9x8 in each 4 cells.
Cell2mat converts those cells into one matrix of 9x32. I am able to extract the second column from that.
Now, I want the data from every 8th column i.e. d(:,8), d(:,16), d(:,24), d(:,32) in a for loop but I am unable to do that.
After that I should be able to plot 'x' with each of those data from each column.
Any kind of help will be appreciated.
댓글 수: 10
Bob Thompson
2018년 12월 17일
What do you mean by, "I am unable to do that?" Have you run into some kind of error? Do you not know the commands necessary? Or do you not know the exact formulation for such a task?
Yoham Parelkar
2018년 12월 17일
Bob Thompson
2018년 12월 17일
You're unable to save more than d(:,32) because you're overwriting y each time you run the loop. If you want to save each result from a loop you should index your result. A better way of doing this would be the following.
y = d(:,[8,16,24,32]);
Yoham Parelkar
2018년 12월 17일
Bob Thompson
2018년 12월 17일
편집: Bob Thompson
2018년 12월 18일
for i = 1:floor(size(d,2)/8);
y(:,i) = d(:,i*8);
end
Try that.
Yoham Parelkar
2018년 12월 17일
Image Analyst
2018년 12월 18일
Bob, again, please, answers down below in the answers section, not up here in the comments section.
Bob Thompson
2018년 12월 18일
Ha, you are correct, I had an error. It has been fixed now.
Yoham Parelkar
2018년 12월 18일
Bob Thompson
2018년 12월 18일
You need to set 'hold on'. That will allow you to plot multiple lines on the same figure. You can do this before the loop.
채택된 답변
추가 답변 (1개)
madhan ravi
2018년 12월 17일
편집: madhan ravi
2018년 12월 17일
Replying to your latter comment :
y=cell(1,numel(1:8:32));
for l=1:8:32
y{l}=d(:,l);
end
celldisp(y) % [y{:}] to convert it to double from cell
y=d(:,[1:8:32])
댓글 수: 3
Yoham Parelkar
2018년 12월 17일
madhan ravi
2018년 12월 17일
Anytime :) , if my code worked make sure to accept the answer else let know what needs to be done after you analyse(take your time) let me take a short nap by then ;-).
Yoham Parelkar
2018년 12월 18일
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!