2014-01-23 283 views
1

我有一個單元格陣列,每個單元格是(x,y)座標上的一個點(即單元格的大小爲[1x2])。是否有可能將其改爲矩陣,以保留那些協調點?如何在matlab中將單元格數組更改爲矢量?

因爲當我使用cell2mat時,奇特的協調變成了[1x1]的大小,而我需要的座標。

我的單元陣列是這樣的:[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]

我怎樣才能將其更改爲這些座標可以在以後的繪製中使用的載體?

+2

請提供您的預期結果格式。 – herohuyongtao

+0

也許最好問一下,我如何繪製一個單元格陣列,而每個單元格是(x,y)上的一個特殊座標? – Biju

+1

@Biju正如Luis所示,然後'plot(result(:,1),result(:,2),'*')' – Dan

回答

4
>> myCell = {[1 2],[3 4],[5 6]}; %// example cell. Can have any size/shape 
>> result = cell2mat(myCell(:)) %// linearize and then convert to matrix 
result = 
    1  2 
    3  4 
    5  6 

要繪製:

plot(result(:,1),result(:,2),'o') %// or change line spec 
+0

謝謝路易斯,但我想繪製[xy]這些座標,雖然他們在單元格格式,並不需要讓他們分開 – Biju

+0

在你的問題你說「改變矩陣」...無論如何,看到更新回答 –

+0

@LuisMendo'myCell = {[1 2 3],[3 4],[5 6 5 6 7]}'那麼我該如何將這個單元格數組轉換爲向量? –

0
myCell = {[0,2] [0,2] [1,3] [-13,10] [1,4] [-1,5]}; 
hold on; 
cellfun(@(c) plot(c(1),c(2),'o'),myCell); 
1

另一種方式來實現這一點:在MATLAB

c = {[1 2], [3 4], [5 6]}; 
v = vertcat(c{:}); % same as: cat(1,c{:}) 

plot(v(:,1), v(:,2), 'o') 

單元陣列可擴展成一個comma-separated list,所以上述呼叫是等效到:vertcat(c{1}, c{2}, c{3})

+0

'c = {[1 2 3],[3 4],[5 6 5 6 7]}'那麼我該如何將這個單元格數組轉換爲向量? –

+0

在你的情況下,你只能將單元格數組變成一維矢量(1x10矢量),如'v = [c {:}]'或'v = cat(2,c {:})'。您看到何時連接數組,維度必須**一致**;你不能有[[鋸齒]](https://en.wikipedia.org/wiki/Jagged_array)[矩陣](https://en.wikipedia.org/wiki/Irregular_matrix) – Amro

+0

否則你可以**使用NaN填充每個單元格,以便所有行在連接之前具有相同的長度。你可以在Stack Overflow找到很多類似的問題,例如:https://stackoverflow.com/q/3054437/97160 – Amro

相關問題