user2208604
user2208604

Reputation: 401

Accessing the contents of a 1x1 matlab cell

I'm not sure about the terminology, but I have read data from a text file into a 1x1 cell array P. When examining P, it lists "<142x2 cell>" in the (1,1) position. From there I can double-click this and it opens up into the 142x2 cell that I actually want. The issue is, I don't get how to manipulate this data via code to convert from the 1x1 cell array to the 142x2 cell array. Also, I cannot find anywhere what the curly brackets denote.

Upvotes: 3

Views: 8707

Answers (2)

Dennis Jaheruddin
Dennis Jaheruddin

Reputation: 21561

Short answer: You can assign the content of the first cell in P to P.

Example:

P = {cell(142,2)}; %Create a 142x2 cell inside a cell
P = P{1};          %Solution: Now P is a 142x2 cell

If you try help cell it will lead you to help paren that explains the use of curly brackets.

Upvotes: 2

Eitan T
Eitan T

Reputation: 32930

I don't get how to manipulate this data via code to convert from the 1x1 cell array to the 142x2 cell array.

The cell array P is actually a 1x1 cell array, which in turn contains another cell array 142x2. This type of output is very common when using textscan. To access the inner cell array, you can simply use curly braces ({}), like so:

Q = P{1}; // or P{:} if you're certain that P holds only one cell

The resulting Q should hold your 142x2 cell array. I usually "flatten" P by doing P = P{:}, without using an intermediate variable.

Also, I cannot find anywhere what the curly brackets denote.

Have you read MATLAB's documentation about special characters? Here's what it says:

Curly braces are used in cell array assignment statements. For example, A(2,1) = {[1 2 3; 4 5 6]}, or A{2,2} = ('str'). See help paren for more information about { }.

I would also urge you to read the following (very) related question: Difference between accessing cell elements using {} and () (curly braces vs. parentheses)

Upvotes: 7

Related Questions