How can I add NaNs to a cell array in positions that match the positions of NaNs in a separate matrix?

I have a matrix (A) containing some NaNs. I also have a cell array (B) with no NaNs, containing script in every element.
Where NaNs exist in A, I also want NaNs to appear in B.
Below is my failed attempt to do this. The final line of the script results in an error: "Conversion to cell from double is not possible." Any advice would be much appreciated.
A = rand(2); % matrix
A(1,2) = NaN
B = {'fred' 'wilma'; % cell array
'barney' 'betty'};
nan_locations = find(isnan(A)); % index location of NaNs in A
B(nan_locations) = NaN % in B insert NaNs in same locations as A

Plus de réponses (1)

Use
B{isnan(A)} = NaN

5 commentaires

What you were trying to do was replace an entire cell ( () indexing ) in B by NaN. What you must do is replace the contents ( {} indexing ) of that cell by a NaN.
Vishal. Your solution works perfectly for my example, but for my actual data, when I use your approach, I get the error: "The right hand side of this assignment has too few values to satisfy the left hand side."
My actual A is a double and actual B is cell. All elements in my actual B are strings of very similar length and composition, eg:
>> BACTUAL(1)
ans =
'IE0004613620'
Check if A and B are of identical size.
Above method will give error if there are no NaN values in A.
Post your code if possible.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by