Re: [問題] 從矩陣中找出相同、出現次數已回收

看板MATLAB作者 (失ゎれた彩畫)時間16年前 (2009/12/23 03:30), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《Ysen (ㄎㄎㄎ)》之銘言: : 假設我今天有一個矩陣a : a=[1 1 1 1 2 3 4 3 2 5 5 5 5 5 6 7 8 7 6 3 3 3 3 3 9 7 8 6]; : 我想找出a相同且連續的地方,b... : b=[1 1 1 1 5 5 5 5 5 3 3 3 3 3]; : 再從b裡面找出1,5,3重複幾次... : 我本想利用if判斷式來做..但想想matlab也許有比較容易的指令... : 是否可請版上高手教導一下.. : 謝謝 a=[1 1 1 1 2 3 4 3 2 5 5 5 5 5 6 7 8 7 6 3 3 3 3 3 9 7 8 6]; da=diff(a); da= Columns 1 through 9 0 0 0 1 1 1 -1 -1 3 Columns 10 through 18 0 0 0 0 1 1 1 -1 -1 Columns 19 through 27 -3 0 0 0 0 6 -2 1 -2 用diff的原因是 找相同且連續的地方=diff為0的地方 然後使用logic array的方式找出a中對應的值 c=a(da==0) Columns 1 through 9 1 1 1 5 5 5 5 3 3 Columns 10 through 11 3 3 再用unique找到不重複的數字 這裡是1 3 5 然後去算c裡面1 3 5各出現的次數再加1 (因為diff會少一項) 程式碼如下: clear all;clc; a=[1 1 1 1 2 3 4 3 2 5 5 5 5 5 6 7 8 7 6 3 3 3 3 3 9 7 8 6]; da=diff(a) c=a(da==0) d=unique(c) table=zeros(2,size(d,2)); for m = 1:size(d,2) table(1,m)=d(m); table(2,m)=size(c(c==d(m)),2)+1; end 最後結果: table = 1 3 5 4 5 5 1連續出現4次 3連續出現5次 5連續出現5次 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.82.2

12/26 20:44, , 1F
謝謝前輩指教,很受用..謝謝
12/26 20:44, 1F
文章代碼(AID): #1BCHvPU_ (MATLAB)
文章代碼(AID): #1BCHvPU_ (MATLAB)