2012-03-26 54 views
1

我在MATLAB這個細胞(16X1):Matlab的電池陣列工作不

eventIDs = 

    'explosion' 
    'light' 
    'darkness' 
    'atomic' 
    ... 
    .. 

現在我想用這個:

%First bar plotting! 
bar(duration_vector); 
d = size(duration_vector); 
labels = cell2mat(eventIDs); 
xticklabel_rotate([1:d],45,eventIDs,'interpreter','none'); 
set(gca, 'XTick', 1:d, 'XTickLabel', labels); 

我要繪製的條形圖,但我的事件我太久了,我希望他們旋轉看起來不錯!

但是當我運行的代碼 我得到這個:

??? Error using ==> cat 
CAT arguments dimensions are not consistent. 

Error in ==> cell2mat at 85 
      m{n} = cat(1,c{:,n}); 

Error in ==> extract_data at 52 
labels = cell2mat(eventIDs); 

回答

2

cell2mat在Matlab只有當你的電池在所有行的一致數列的作品。那是因爲Matlab無法處理每行數量可變的正常數組,這通常是字符串矩陣的情況。也就是說,單元格操作幾乎等於矩陣操作,唯一的區別是索引方法:矩陣使用方括號([)和單元格使用大括號。

我搜索了你正在使用的這個函數的代碼xticklabel_rotate,並找到了函數here的fileexchange鏈接。在那裏,作者給出的例子使用了一個單元格,而不是一個矩陣。

所以我猜你可以關閉這個cell2mat因爲我不需要用你使用的set函數設置Xticks。 xticklabel_rotate應該這樣做。

我想你應該試試這個:

%First bar plotting! 
bar(duration_vector); 
d = size(duration_vector); 
xticklabel_rotate([1:d],45,eventIDs,'interpreter','none'); 
+1

你給了我同樣的代碼.. – 2012-03-26 19:29:15

+0

我忘了刪除兩行我會刪除:對,基本上只是降低到設定和cell2mat,它應該工作 – Castilho 2012-03-26 19:31:55

+0

抱歉,我得到這個: ???對於'cell'類型的輸入參數,未定義的函數或方法'xticklabel_rotate'。 錯誤==> extract_data at 53 xticklabel_rotate([1:d],45,eventIDs,'interpreter','none'); – 2012-03-26 19:34:12

2

你不需要做cell2mat。這會嘗試創建一個字符的二維矩陣(因爲字符串長度不同而失敗)。

您也不需要set(...行,因爲xticklabel_rotate已經設置了標籤。

+0

這工作正常,但我想旋轉的事件。 – 2012-03-26 19:29:39

+0

呃,看編輯。對不起,把它混合起來。 – trutheality 2012-03-26 19:31:32

+0

我得到這個: ???對於'cell'類型的輸入參數,未定義的函數或方法'xticklabel_rotate'。 錯誤==> extract_data at 53 xticklabel_rotate([1:d],45,eventIDs,'interpreter','none'); – 2012-03-26 19:32:33