먼저 오류를 설명하겠습니다. 64*64 이미지 블록(각 블록은 4*4)은 16블록이 아니라 256블록이어야 합니다.
다음은 프로그램입니다
A가 64*64 이미지 행렬이라고 가정
B=mat2cell(A,4*ones(1,16),4*ones(1,16));
B=reshape(cat(3,B{:}),16,[]);%B는 원하는 행렬이며 16행과 256열입니다
%지침은 다음과 같습니다
%A=
로 가정하면 대략적인 관계는 이렇습니다.%A1 A17 … A241
%A2 A18 … A242
%∶ ∶ ∶
%A16 A19 … A256
%(여기 있는 각 AI는 4*4 매트릭스 블록입니다)
%그럼 B=
%B1 B2 B3 … B256
%각 Bi는 Ai에 해당하는 16*1 열 벡터입니다
%
%는 Ai=
라고 가정함을 의미합니다.%a1 a5 a9 a13
%a2a6a10a14
%a3 a7 a11 a15
%a4a8a12a16
%
% 그럼 비=
%a1
%a2
%∶
%a16
MATLAB에서 행렬을 차원이 같은 여러 행렬로 나누는 방법:
reshape 기능을 사용하세요: 명령 창에서 doc reshape를 입력하세요.
MATLAB 소개:
MATLAB은 미국 MathWorks사에서 제작한 상용 수학 소프트웨어로, 알고리즘 개발, 데이터 시각화, 데이터 분석 및 수치 계산에 사용되는 고급 기술 컴퓨팅 언어 및 대화형 환경입니다.
MATLAB은 매트릭스 공장(Matrix Laboratory)을 뜻하는 Matrix&Laboratory 두 단어의 합성어입니다. 미국 Mathworks 회사가 주로 과학 컴퓨팅, 시각화 및 대화형 프로그래밍을 위해 출시한 첨단 컴퓨팅 환경입니다. 수치해석, 행렬 계산, 과학적 데이터 시각화, 비선형 동적 시스템의 모델링 및 시뮬레이션 등 많은 강력한 기능을 사용하기 쉬운 창 환경에 통합하여 과학 연구, 공학 설계 및 수행해야 하는 많은 과학 분야를 제공합니다. 이 분야는 포괄적인 솔루션을 제공하며 오늘날 국제 과학 컴퓨팅 소프트웨어의 고급 수준을 대표하는 전통적인 비대화형 프로그래밍 언어(예: C 및 Fortran)의 편집 모드에서 크게 벗어났습니다.
% 원래 행렬이
의 변수에 존재한다고 가정합니다.a=nchoosek(1:20,16);%는 16개로 구성된 20개의 서로 다른 조합을 생성하며 4845가지 종류가 있으며 4845x16 행렬을 반환합니다
번호=크기(a,1);%num=4845
choose=true(숫자,1);
ii=1:num의 경우
temp=in(a(ii,:),:); %는 행 ii의 조합을 사용하여 임시 정사각형 행렬을 형성합니다
d=det(temp);% 행렬식 계산
if d==0 % 계산에 잘림 오류가 포함된 경우 조건 abs(d) choose(ii)=false; %는 행렬식이 0인 조합을 표시합니다 끝 끝 chooseout=a(choose,:);%chooseout은 nx16의 행렬이고, n은 조건을 충족하는 행렬의 개수입니다 %를 사용하면 조건을 충족하는 n번째 행렬을 얻기 위해 out=in(chooseout(n,:),:)을 사용할 수 있습니다
위 내용은 MATLAB을 사용한 이미지 블록 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!