Hi guys I have a double matrix as shown in the attached picture that I am trying to replace all NaN values with Empty spaces so that the over all matrix dimension will be maintained. However, when I looked through the function and suggested solutions non of them is actully working what possible code can be used.
Matrix.PNG
Thanks in advance

댓글 수: 1

David
David 2024년 6월 5일
This is not a "fix it in Matlab" answer, but I've been generating tables in Matlab to use in Word for example. When I build the table matrix, I insert NaN's in every cell that I want blank. Then in Word, I use "find and replace" to replace all those with something else; i.e., '---'. This idea should work in Excel too, although I've not tested it there.

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

 채택된 답변

Walter Roberson
Walter Roberson 2020년 2월 7일
편집: Walter Roberson 2020년 2월 7일

2 개 추천

It is not possible to have a numeric array that has blanks in it.
You can use
fillmissing(V1, 'constant', 0)
to replace the NaN entries with 0... or you could do
V1(isnan(V1)) = 0;
for the same effect.
If you need a blank then you will need to convert to cell array, such as
V1c = num2cell(V1);
mask = cellfun(@(C) all(isnan(C)), V1c);
V1c(mask) = {' '};
If you do this, then the variable browser will show ' ' (including the quotes) in those locations but the quote marks are not part of the content. disp(V1c) would show ugly things like
{[ 1]} {[ 1]} {[ 1]} {[2]} {[3]}
{' '} {[ 3]} {[ 2]} {[1]} {[3]}
{[ 2]} {' '} {[ 3]} {[3]} {[2]}
{[ 3]} {[ 2]} {[ 3]} {[3]} {[2]}
{[ 3]} {[ 3]} {' '} {[3]} {[1]}

댓글 수: 4

Abdullah Azzam
Abdullah Azzam 2020년 2월 7일
What I am trying to do is combining 2 array one contain string and the other contains the value. But when I try to do that the NaN or empty space overwrite the other spaces.
Assuming the same example above but some of the NaNs has string on them in another array with same dimension. Is there away to combine these 2 array as one.
You can use a cell array, or you can use a table, or you can use a struct.
However, it is impossible in MATLAB to have a numeric array that contains (for example)
-10 7 trace
-4 -2 none
3 9 5 mm
Numeric arrays cannot contain characters. Non-numeric arrays such as cell arrays do not display anything like the above example by default -- to display like that you would have to write a small bit of code to do the formatting into characters.
Abdullah Azzam
Abdullah Azzam 2020년 2월 8일
Ok. Then how may I import an excel sheet that contain both numaric and string value into the matlab. Note if it isn't possible I don't mind if the numric were saved as strings
Walter Roberson
Walter Roberson 2020년 2월 8일
readtable() is what is recommended these days.
Or you could xlsread() . The first input will contain only numeric parts, the second output will contain text without numbers, and the third will contain both. But readtable() is typically better.
In some cases it might be more suitable to use readcell() for R2019b and later.

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

추가 답변 (2개)

dpb
dpb 2020년 2월 7일

0 개 추천

Can't be done--a double array has to be regular in both dimension; can't have holes.
Only possibility is to convert to a cell array.
Opeyemi Kehinde
Opeyemi Kehinde 2021년 12월 5일

0 개 추천

fillmissing(V1, 'constant', [])
will this work to make NaN an empty entry

댓글 수: 2

Let us test:
V1 = [1 2 nan 3; 4 nan 5 6]
V1 = 2×4
1 2 NaN 3 4 NaN 5 6
fillmissing(V1, 'constant', [])
Error using fillmissing/checkConstantsSize (line 740)
Fill constant must be a scalar or a 4-element vector.

Error in fillmissing/parseInputs (line 680)
intConstOrWindowSize = checkConstantsSize(A,AisTable,false,intConstOrWindowSize,dim,dataVars,'');

Error in fillmissing (line 158)
[A,AisTable,intM,intConstOrWinSize,extM,x,dim,dataVars,ma,maxgap] = parseInputs(A,fillMethod,varargin{:});
So... NO.
Opeyemi Kehinde
Opeyemi Kehinde 2021년 12월 10일
Thank you!

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

카테고리

도움말 센터File Exchange에서 Data Type Conversion에 대해 자세히 알아보기

제품

릴리스

R2017a

질문:

2020년 2월 7일

댓글:

2024년 6월 5일

Community Treasure Hunt

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

Start Hunting!

Translated by