Apply the same function into several columns

Hi!
I have a matrix A (50x50), and every column of the 50 are different subjects. I want to apply the same function to each column separetely and save the answers of the function into a different matrix B(50x1) The function is exactly the same, all that changes is the data on which the function is performed on.
How can I do it?
Thanks!

 채택된 답변

Guillaume
Guillaume 2019년 4월 4일
편집: Guillaume 2019년 4월 4일

0 개 추천

Use a loop:
B = zeros(1, size(A, 2));
for column = 1 : size(A, 2)
B(column) = yourfunction(A(:, column));
end
Or you can use cellfun, which is just a loop in disguise:
B = cellfun(@yourfunction, num2cell(A, 1));
edit: That's assuming the function cannot already operate on the columns of the whole matrix, as pointed out by Star.

댓글 수: 2

I suggest the use of arrayfun, rather than cellfun, assuming yourfunction(V) returns a scalar value for a vector V:
B = arrayfun(@(k) yourfunction(A(:,k)) , 1:size(A, 2))
Guillaume
Guillaume 2019년 4월 4일
I find the cellfun more readable personally. Ultimately, you have the cost of an anonymous function call vs the cost of splitting the matrix into a cell array.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

MAK
2019년 4월 4일

답변:

MAK
2019년 4월 4일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by