2012-06-11 72 views
6

Tôi có một ô có kích thước 400x1. Về cơ bản nó bao gồm các số ở dạng chuỗi. Ý tôi là khi tôi làmChuyển đổi ô thành mảng trong MATLAB

mycell{1} 

nó mang lại kết quả '1'

Vì vậy, bạn sẽ nhìn thấy số 1 là theo hình thức chuỗi. Làm thế nào tôi có thể chuyển đổi này thành một mảng số?

Trả lời

5

Như thế này nếu size(mycell) là 400x1. . . . .

str2num(cell2mat(mycell)) 

... hay như thế này nếu kích thước là 1x400

str2num(cell2mat(mycell')) 

Tuy nhiên, điều này sẽ gây ra vấn đề nếu có các chuỗi của bạn có chứa một số lượng khác nhau của các nhân vật, tức là

mycell{1} = '2' 
mycell{2} = '33' 

Nếu bạn có một trường hợp như thế này,

str2double(mycell) 

... dường như xử lý ok này như đã đề cập trong câu trả lời khác!

7
str2double(mycell) 

Với điều kiện là bạn có một mảng thứ trông giống như đôi:

>> c = {'1' '2' ; '3' '4'} 

c = 

    '1' '2' 
    '3' '4' 

>> str2double(c) 

ans = 

    1  2 
    3  4 

>> whos ans 
    Name  Size   Bytes Class  Attributes 

    ans  2x2    32 double    

Nếu bạn có cái gì đó không giống như một đôi, bạn sẽ nhận được một NaN trong ô đó trong kết quả:

>> c{2,2} = 'aei' 

c = 

    '1' '2' 
    '3' 'aei' 

>> str2double(c) 

ans = 

    1  2 
    3 NaN 
+0

+1 -> Đây là tổng quát hơn phần gốc của câu trả lời của tôi :) – learnvst

3

Ngoài ra bạn có thể thử cellfun(@str2num,mycell) Nếu bạn có một mảng di động của đôi:

mycell = {'1.56548524'; '1.5265'; '-4.2616' ;'-0.2154' ;'2.15'};

bạn có thể thử

mat = cellfun(@str2num,mycell)

Các vấn đề liên quan