Error Using cellfun for a Matrix
조회 수: 1 (최근 30일)
이전 댓글 표시
I have an 81 x 81 matrix that divided it into smaller matrices:
a = rand(81,81);
n = 3*ones(1,27);
a_d = mat2cell(a,n,n)
Now I want to perform this operation on each of the small matrices but it gives me error:
G_x = @(x) sum((x-a_d)./(x+a_d),'all');
B_x = cellfun(G_x,a_d)
Can someone please help me! Thank you.
댓글 수: 0
채택된 답변
Simon Chan
2022년 1월 10일
Try the following:
for r = 1:27
for c = 1:27
A = a_d{r,c};
B_x{r,c} = cellfun(@(x) sum((x-A)./(x+A),'all'),num2cell(A));
end
end
댓글 수: 0
추가 답변 (1개)
Kevin Holly
2022년 1월 10일
a = rand(81,81);
n = 3*ones(1,27);
a_d = mat2cell(a,n,n);
for i = 1:27
for j = 1:27
G_x = @(x) sum((x-a_d{i,j})./(x+a_d{i,j}),'all');
B_x(i,j,:,:) = cellfun(G_x,a_d);
end
end
size(B_x)
댓글 수: 2
Kevin Holly
2022년 1월 10일
편집: Kevin Holly
2022년 1월 10일
FYI, braces needed to be added as Simon had done.
a = rand(81,81);
n = 3*ones(1,27);
a_d = mat2cell(a,n,n);
for i = 1:27
for j = 1:27
G_x = @(x) sum((x-a_d{i,j})./(x+a_d{i,j}),'all');
B_x{i,j,:,:} = cellfun(G_x,a_d); %Added braces here
end
end
size(B_x)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!