change only some cell values to a value of 1

조회 수: 4 (최근 30일)
Conner Carriere
Conner Carriere 2022년 11월 12일
답변: Voss 2022년 11월 12일
I want to change all the zeros in my cell to a value of 1. I know this could be done with a for and if statement, but is there anything that is faster?
Here is my data
[0,241,638,168]
[204,181,382,287;56,0,185,244]
[0,59,574,506]
[8,58,231,546]
[28,68,375,247]
[115,82,524,510]
Want it to look like this
[1,241,638,168]
[204,181,382,287;56,1,185,244]
[1,59,574,506]
[8,58,231,546]
[28,68,375,247]
[115,82,524,510]
Would it be some sort of cellfun() function?
  댓글 수: 2
Conner Carriere
Conner Carriere 2022년 11월 12일
A(A == 0) = 1 works for arrays, but not for cells.
Conner Carriere
Conner Carriere 2022년 11월 12일
{cat(1, a{1,1:4})} works alright once i convert it to a matrix, but then I would have to do a big for loop afterwards for each row. In the end I need a 4x1 cell with [x x x x]

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

채택된 답변

Voss
Voss 2022년 11월 12일
Yes, you can use cellfun with a helper function:
C = {
[0,241,638,168]
[204,181,382,287;56,0,185,244]
[0,59,574,506]
[8,58,231,546]
[28,68,375,247]
[115,82,524,510]
};
C_new = cellfun(@zeros2ones,C,'UniformOutput',false)
C_new = 6×1 cell array
{[ 1 241 638 168]} {2×4 double } {[ 1 59 574 506]} {[ 8 58 231 546]} {[ 28 68 375 247]} {[115 82 524 510]}
function A = zeros2ones(A)
A(A == 0) = 1;
end

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by