Re: [問題] 想將矩陣分類已回收
※ 引述《sindyddd ()》之銘言:
: 改一下說明方式
: 如果我現在有
: f(1,1) f(1,2) f(1,3) f(1,4) f(1,5)
: f(2,2) f(2,3) f(2,4) f(2,5)
: f(3,3) f(3,4) f(3,5)
: f(4,4) f(4,5)
: f(5,5) 這樣的矩陣
:
: f(1,1)裡有a1,a2,....,a10 10個值
: f(1,2)裡有b1,b2,....,b10 10個值
: f(1,3)裡有c1,c2,....,c10 10個值
: 同理一直到
: f(5,5)裡有o1,o2,....,o10 10個值
:
:
:
: 可以將 a1~a10 , b1~b10 , ... , o1~o10 寫在同一個矩陣上
: 但我主要想區分哪個值是在f(?,?)裡的
: 比如我現在說 m7 ,那他是跟哪個f相對應? < 答案是:f(4,4)裡的第7個值 >
: 而不用在好幾列好幾行裡 一個一個慢慢數(此例子只是舉例實際上更多行列數)
:
: 請問這樣該怎麼做?
:
: 謝謝大家!!
假設你的 "維度" 叫 n (在你的例子裡 n=5),然後那個大雜燴的矩陣叫 F。
令 F = [f(1,1); f(1,2); ...; f(n,n)]
= [a1, a2, ..., a10;
b1, b2, ..., b10;
...
o1, o2, ..., o10]
現在假設你要找某一個值然後想知道他是 f(x,y) 的第 z 個
z 非常容易求,就拿你的 m7 來說,你會看到他在 F 的第 7 個 column,沒問題。
如果在整個 F 裡 m7 的值是唯一的話,可以用下列的方式求得 z:
[F_row, F_col] = find(F==m7的值);
z = F_col;
問題在於 x, y 要怎麼求,同樣用 m7 當例子,你會發現他在 F 的第 13 個 row。
接著用下面的程式碼可以求得 x, y:
n = 5;
r = cumsum(n:-1:1);
% remember to give your own value to F_row
F_row = 13;
x = find(r>=F_row, 1, 'first');
y = n + F_row - r(x);
如此一來就可以得到 x, y。
不過我個人的建議是修改你的演算法,讓你不用處理這種奇怪的問題 = =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: DigiPrince 來自: 140.113.94.230 (05/19 20:23)
推
05/20 01:21, , 1F
05/20 01:21, 1F
→
05/20 08:51, , 2F
05/20 08:51, 2F
→
05/20 08:51, , 3F
05/20 08:51, 3F
→
05/20 09:17, , 4F
05/20 09:17, 4F
推
05/20 15:11, , 5F
05/20 15:11, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
問題
2
10