[問題] 簡化矩陣算式問題已回收

看板MATLAB作者 (詹姆士布雷克)時間15年前 (2011/01/07 22:44), 編輯推噓4(405)
留言9則, 5人參與, 最新討論串1/1
輸入一張y矩陣,值為0至255如下列所示, 我要將小於32的數變成0,大於32小於64的值變成1。 依此類推,不曉得matlab有沒有這種正規化的函數。 謝謝。 R=y(:,:,1); r=R; for i=1:m for j=1:n if R(i,j)<32 r(i,j)=0; elseif R(i,j)>=32&&R(i,j)<64 r(i,j)=1; elseif R(i,j)>=64&&R(i,j)<96 r(i,j)=2; elseif R(i,j)>=96&&R(i,j)<128 r(i,j)=3; elseif R(i,j)>=128&&R(i,j)<160 r(i,j)=4; elseif R(i,j)>=160&&R(i,j)<192 r(i,j)=5; elseif R(i,j)>=192&&R(i,j)<224 r(i,j)=6; else r(i,j)=7; end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.112.193

01/07 23:13, , 1F
記得imshow後面可以接類似的東西,但不確定會不會改變矩陣
01/07 23:13, 1F

01/07 23:13, , 2F
不過我會用find下去跑...
01/07 23:13, 2F

01/07 23:35, , 3F
floor(R/32)
01/07 23:35, 3F

01/07 23:41, , 4F
CC大那招好像可以耶 簡潔有力 FIND好像也有點吃力
01/07 23:41, 4F

01/07 23:44, , 5F
cc大那招我測試一下 還是會有點誤差
01/07 23:44, 5F

01/07 23:53, , 6F
沒誤差了要將uint8轉DOUBLE 謝啦 CC大
01/07 23:53, 6F

01/08 00:22, , 7F
CC大這招酷捏...學起來(筆記)
01/08 00:22, 7F

01/08 01:24, , 8F
如果R是unit8,請改用(R-16)/32
01/08 01:24, 8F

01/08 09:11, , 9F
SUN大真的是高手耶 哈 每次都用點的 點醒我 哈哈
01/08 09:11, 9F
文章代碼(AID): #1D9oRXrM (MATLAB)