if i have text file that has three column say
1 2 1
3 1 1
2 3 1
and also have a matrix s =
[0.3 0.4 0.6
0.1 0.5 0.7
0.2 0.11 0.9]
firstly: with respect to text file, i want to consider first column as i and second column as j then if the third column equal 1 then put its corresponding value in matrix s in new array say A else put remaining value in matrix s in new another array say B.
i.e i want this result
A=[0.4, 0.2, 0.7] B=[0.3, 0.6, 0.1, 0.5, 0.11, 0.9]

댓글 수: 2

Where do the values go if the third column is not 1? At present your rule is:
coordinate is present and third column is 1 -> put in A
coordinate not present -> put in B
what is the rule for
coordinate is present and third column is not 1 -> ??
muhammad ismat
muhammad ismat 2015년 6월 14일
i'm so sorry for more questions
we consider the coordinates that present are 1 2, 2 1,3 1, 1 3,2 3,3 2; i.e that present and its inverse so A=[0.4 , 0.1 , 0.2 , 0.6 , 0.7, 0.11] B=[0.3, 0.5, 0.9]
2- how to take percentage of variable A say 20% of values

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

 채택된 답변

Andrei Bobrov
Andrei Bobrov 2015년 6월 9일
편집: Andrei Bobrov 2015년 6월 9일

1 개 추천

ii = [1 2 1
3 1 1
2 3 1];
s = [0.3 0.4 0.6
0.1 0.5 0.7
0.2 0.11 0.9];
[x,y,z] = size(s);
ij = num2cell(ii,1);
idx = sub2ind([x,y,z],ij{:});
A = s(idx);
B = s(setdiff(1:numel(s),idx));

추가 답변 (2개)

Guillaume
Guillaume 2015년 6월 9일

1 개 추천

I'll assume you know how to read the text file (use load). One way to do it:
coordinates = [1 2 1
3 1 1
2 3 1];
s = [0.3 0.4 0.6
0.1 0.5 0.7
0.2 0.11 0.9];
linindices = sub2ind(size(s), coordinates(:, 1), coordinates(:, 2))';
A = s(linindices)
B = s(setdiff(1:numel(s), linindices))
Walter Roberson
Walter Roberson 2015년 6월 9일

0 개 추천

dlmread() or load() the text file into a matrix, and then work with it in memory.

카테고리

도움말 센터File Exchange에서 Language Support에 대해 자세히 알아보기

질문:

2015년 6월 9일

댓글:

2015년 6월 14일

Community Treasure Hunt

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

Start Hunting!

Translated by