Re: [問題] 矩陣的邏輯判斷已回收
※ 引述《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
討論串 (同標題文章)