How can i extract Index values of different cell arrays
조회 수: 18 (최근 30일)
이전 댓글 표시
I want to extract the cell arrays w.r.to the index num,
for w =1:length(mydata)
%[~,I]= find(mydata{w, 2}(:,2)) = find(mydata{w, 1}(:,1));
for o = 1:length(mydata{w,2})
index = find(mydata{w, 2}(:,2) == mydata{w, 1}(:,1)== o);
mydata{w,3} = index;
end
end
I have a cell which contains max and its index values in each row. Now i want to find max index values in another cell and extract those values( matrix 1*2, here i want to extract only 1st col value only). for ex. [M,I] = [2,295]. 295 index value of its max value in certain row, let say (6,26321) is the extracted index value in another cell. extract value is 6(1st col) similarly all other row cells matrix. Thanks in advance.
댓글 수: 5
채택된 답변
jonas
2018년 7월 30일
편집: jonas
2018년 7월 30일
Something like this should work.
s = load('mydata21.mat')
s=s.mydata21;
c=s(:,2) %arrays with indices
d=s(:,1) %arrays with values
out=cellfun(@(x,y)y(x(2),1),c,d)
댓글 수: 6
jonas
2018년 7월 30일
편집: jonas
2018년 7월 30일
1. Cellfun is just a clean way of performing operation on multiple cells. In this case you can do the same with a simple loop:
%%Load data
s = load('mydata21.mat')
s=s.mydata21;
%%Preallocate
out=nan(length(s))
%%Loop over each row
for i=1:length(s)
out(i)=s{i,1}(s{i,2}(2));
end
2. If your data is already loaded, just delete the first line and replace the variable with whatever you call it? I suppose you should replace s by mydata?
3. In the cellfun or the loop, just change the column index from 1 to 2.
추가 답변 (0개)
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!