Finding out values for elements of an array from corresponding array elements?

1 回表示 (過去 30 日間)
Tha saliem
Tha saliem 2018 年 1 月 10 日
コメント済み: Tha saliem 2018 年 1 月 10 日
hi
i have calculated weights given below between elements of a matrix using some mathematics
weights= {[0.79,0.31,0.24,0.71,0.1],[0.79,0.12,0.71,0.62,0.24]}
Here
[0.79,0.31,0.24,0.71,0.1]
represents weight between 1 and 2,3,4,5,6 (0.79 for 1,2 ; 0.31 for 1,3 and so on) AND
[0.79,0.12,0.71,0.62,0.24]
represents weights between 2 and 1,3,4,5,6 (0.79 between 2,1 ; 0.12 between 2 and 3 and so on)
We can say that values of diagonal elements like 1,1 ; 2,2 are not there in weights.
Now I have another array X And I need weights of these elements from corresponding weights cell. LIKE for 3, weight of 1,3 will be taken as an output which is 0.31 in this case
X={[3;5;6;8];{[1;5;6;8]}}
Problem is that if i try to get this using loop: weight of 3 is at index position 2 in weights. For first row we can use loop using index-1. BUT when it comes to 2nd row this will not work weight for index 1 is at index 1 in weights{1,2}. But for 5 is at index 4 in weights{1,2}. confused about how to do this.
Also there are not just 2 rows. They are large in number.
Kindly help to solve this
THANK YOU

採用された回答

Thorsten
Thorsten 2018 年 1 月 10 日
You can represent your weights as a matrix using NaN for the diagonal elements that do not exist:
Weights = [NaN, 0.79,0.31,0.24,0.71,0.1;
0.79, NaN, 0.12,0.71,0.62,0.24];
Then you can simply get the proper weight for row i, column j as
Weights(i, j)

その他の回答 (1 件)

dpb
dpb 2018 年 1 月 10 日
I think simplest solution would be to just augment the weights array by a placeholder for the missing diagonal positions; then there's a straight 1:1 lookup. Use NaN as a marker if need a unique way to select the non-diagonal members only.

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by