Re: [問題] 矩陣的邏輯判斷已回收

看板MATLAB作者 (大長今)時間16年前 (2010/03/23 23:16), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《SKIE49 (阿康)》之銘言: : 一個矩陣a(12*8) : 0 0 0 0 0 0 0 0 : 0 1 0 1 0 1 1 1 : 1 0 0 0 1 1 0 0 : 0 1 1 1 0 0 1 0 : 1 1 0 1 0 0 1 1 : 1 0 1 1 1 0 1 1 : 1 0 0 0 1 1 1 1 : 1 0 1 0 1 1 1 1 : 0 0 1 1 0 1 1 1 : 0 1 1 1 1 1 0 0 : 1 0 1 1 1 0 1 0 : 0 0 0 0 1 1 1 1 : b=cell2mat(cellfun(@(x)(sum(sum(x))),mat2cell(a,repmat(12/4,4,1), : repmat(8/4,4,1)),'uni',false)) : 每3*2格分為一群並將內容"相加"成為一新的4*4矩陣b : 將每3*2格分為一群並將儲存格內容"相加"成為一新的4*4矩陣(12/3=4, 8/2=4) : "2" 1 3 2 : 4 5 1 5 : 2 3 5 6 : 2 4 5 3 : 新矩陣的平均值是3.3 : 希望將<3的值都變成3 : 調整的機制是將舊矩陣中對應的資料修改 : 比如說第一格的"2"對應的是 : 0 0 : 0 1 : 1 0 : 將其改成 : 1 0 : 0 1 : 1 0 : 這樣加總值就變成3了, : 挑選哪個0不限定,但不能將1改成2 : 請問有辦法利用matlab做到嗎? : 謝謝大家. for i=1:3:size(a,1) for j=1:2:size(a,2) t=a(i:i+2,j:j+1); if sum(t(:))<3 m=find(~t); u=randperm(length(m)); t(m(1:3-sum(t(:))))=1; a(i:i+2,j:j+1)=t; end end end a -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.27.149

03/24 00:29, , 1F
我成功了 非常感謝大大的協助
03/24 00:29, 1F
文章代碼(AID): #1BgDjaAO (MATLAB)
文章代碼(AID): #1BgDjaAO (MATLAB)