2010-05-04 54 views
1

我在Excel中有一個輸入數據,它有2000行和60列。如何在MATLAB中交換矩陣的行和列

我想讀取這個數據到MATLAB中,但我需要交換行和列,使矩陣將是60行和2000列。我怎麼能在MATLAB中做到這一點,因爲Excel只有256列,不能容納2000列。

+1

Excel 2007可以閱讀2000多列 – Faken 2010-05-04 19:26:46

+0

哎喲,我的眼睛!請格式化您的代碼。 – Doresoom 2010-05-05 18:43:59

+0

我該怎麼辦?我是新來這個論壇,所以我想我怎麼可以在這裏插入一個代碼清楚 – Mola 2010-05-05 19:01:08

回答

4

你只需要調換它:data = data'

+3

請注意,您應該使用'。''運算符進行簡單的數組轉置,因爲如果數據值很複雜,'''運算符將執行復共軛轉置。 – gnovice 2010-05-04 20:00:13

+0

我做到了,但我有錯誤。讓我解釋我做什麼。 我有一個數據是2000行和60列。我試圖繪製labelMap進行聚類,但是我的程序查看了一列,發現i或零能夠將數據分類到這兩個羣集中。但是1或0插入爲額外的行,使其成爲2001行和60列。我想把這個2001作爲行進行轉置,這樣程序就會查看第2001列和執行它的分類並繪製標籤圖。但是隨時運行它,我有錯誤 – Mola 2010-05-04 20:05:16

+0

以下是錯誤: Error in == showMap at 36 figure,plot(cluster1(:,1),n + 1-cluster1(:,2),'^ b',cluster2(:,1),n + 1-cluster2(:,2), 'OG'); 錯誤在==> mainfunction在108 showMap(Map,LabelMap,map_size,data,col); 我不知道是什麼?而這個數字並沒有繪製出來。 – Mola 2010-05-04 20:07:05

0

要在數據讀取MATLAB與xlsread功能啓動。然後轉置它,如tzaman在他的解決方案中顯示。

您的代碼可能是這樣的:

[filename,path]=uigetfile(); 
data=xlsread([path,filename]); 
data=data'; 
xlswrite([path,'myfile.xls'],data); 

這將在同一目錄下保存調換數據myfile.xls原始文件。

編輯:Excel 2003被限制爲256列,這就是爲什麼xlswrite引發錯誤。你有嘗試過使用dlmwrite嗎?

+0

順便說一句,代碼Doresoom建議給出這樣的錯誤: ???錯誤使用==> xlswrite 錯誤:對象返回的錯誤代碼:0x800A03EC 我想excel無法處理超過256列,myfile.xls中的列數應該是2001.我該如何解決這個問題? – Mola 2010-05-04 20:42:01

+0

@Mola:我只是再次檢查並運行我的代碼w/2001列,沒有問題。你使用的是什麼版本的Excel?另外,如果xlswrite一直拋出一個錯誤,並且您只想訪問數據,那麼您可以在用我的示例的前三行加載之後,在MATLAB中操作它。 – Doresoom 2010-05-04 21:54:37

+0

我想寫出來。我不知道我在做什麼錯,但它給了我錯誤。我使用Excel 2003.我仍然有同樣的錯誤。當我運行代碼時,它要求我轉到代碼所在的路徑,然後單擊m文件並提供錯誤。 ??? xlswrite 錯誤:對象返回的錯誤代碼:0x800A03EC 錯誤在==>測試在4 xlswrite([path,'myfile.xls'],data); 我將您的代碼創建爲獨立的M文件來讀取和寫出我的數據。 任何想法 – Mola 2010-05-05 17:57:19