2012-08-28 49 views

Trả lời

26

Một chuỗi các chuỗi phải là một mảng ô. Điều đó nói rằng:

s = [12 25 34 466 55] 
strtrim(cellstr(num2str(s'))') 
+0

Một cách tốt hơn so với những gì tôi đã viết ở trên. – Vish

+0

Điều này nhanh hơn gấp hai lần so với cả arrayfun và cellfun. +1 – Doresoom

0

Trong MATLAB, ['12' '25' '34' '466' '55'] giống như một chuỗi chứa các số đó. Đó là để nói:

['12' '25' '34' '466' '55'] 

ans = 

12253446655 

Tôi cần bối cảnh nhiều hơn ở đây cho những gì bạn đang cố gắng để hoàn thành, nhưng giả sử bạn muốn vẫn có thể truy cập mỗi số cá nhân như là một chuỗi, một mảng di động có lẽ là phương pháp tốt nhất bạn có thể thực hiện:

A = [1 2 3] 
num2cell(num2str(A)) 

(Tất nhiên, bạn vẫn sẽ phải loại bỏ các không gian hoang từ ans)

+0

Ngay cả khi bạn loại bỏ các khoảng cách đi lạc, bạn sẽ kết thúc bằng một chuỗi ô chứa các chữ số riêng biệt. Thay vào đó, hãy đổi thứ tự 'num2cell' và' num2str'. 'cellfun (@ num2str, num2cell (s), 'UniformOutput', false)' hoàn thành công việc một cách độc đáo. – Doresoom

10

Sử dụng arrayfun cùng với num2str sẽ làm việc:

>> A = [12 25 34 466 55] 
A = 
    12 25 34 466 55 

>> arrayfun(@num2str, A, 'UniformOutput', false) 
ans = 
    '12' '25' '34' '466' '55' 
+1

tại sao không 'mảngfun (@ num2str, A, 'UniformOutput', sai)'? Cùng một khái niệm, cùng một đầu ra, nhưng bạn tránh chuyển đổi "từ ô" và "thành ô". – gevang

+0

@gevang: +1. Điểm tốt. Tôi đã cập nhật câu trả lời. – Kavka

7

Bây giờ sau khi MATLAB 2016b, bạn có thể chỉ cần sử dụng

s = [12 25 34 466 55]; 
string(s) 
Các vấn đề liên quan