Re: [問題] 想將矩陣分類已回收

看板MATLAB作者 (幻無影)時間15年前 (2010/05/19 20:21), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《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
F_row=double('m')-96
05/20 01:21, 1F

05/20 08:51, , 2F
呵,我知道樓上的意思,但是實際情況是知道列數不知
05/20 08:51, 2F

05/20 08:51, , 3F
前面標號 (m),而且 m 也是為了舉例才會有的啊
05/20 08:51, 3F

05/20 09:17, , 4F
(應該說知道東西在 F 裡的行列數)
05/20 09:17, 4F

05/20 15:11, , 5F
嗯 謝謝^^
05/20 15:11, 5F
文章代碼(AID): #1ByzVC4v (MATLAB)
文章代碼(AID): #1ByzVC4v (MATLAB)