2010-06-03 148 views
1

您好我有矩陣問題..MATLAB - 指數超過矩陣尺寸

我有不同的行數多的.txt文件,但具有相同數量的列(1列)

e.g. s1.txt = 1234 rows 
    s2.txt = 1200 rows 
    s2.txt = 1100 rows 

我想合併這三個文件。由於它有不同的行..當我把它寫入一個新文件時,我得到了這個錯誤=索引超過矩陣的尺寸。

我該如何解決這個問題? 。

+0

您可以在寫入文件的位置包含代碼塊嗎? – Doresoom 2010-06-03 15:21:53

回答

2

你可以簡單地通過堆疊他們結合三個矩陣:假設s1,等你在閱讀的矩陣,你可以做一個新的一個是這樣的:

snew = [s1; s2; s3];

您也可以使用[]如果你只需要做一次,就不需要創建新的矩陣變量。

1

您提供的信息太少,無法準確診斷您的問題。也許你已經將文件中的數據加載到工作區中的變量中。也許s1有1列和1234行,等等,那麼你可以連接變量爲一個列向量這樣的:

totalVector = [s1; s2; s3]; 

並寫入到一個save()聲明文件。

這有幫助嗎?

0

讓我假設這個問題正在與另一個question連接,並且您想要按列組合這些矩陣,留下的列中包含較少數據的空值。

在這種情況下,該代碼應工作:

BaseFile ='s'; 
n=3; 
A = cell(1,n); 
for k=1:n 
    A{k} = dlmread([BaseFile num2str(k) '.txt']); 
end 

% create cell array with maximum number of rows and n number of columns 
B = cell(max(cellfun(@numel,A)),n); 

% convert each matrix in A to cell array and store in B 
for k=1:n 
    B(1:numel(A{k}),k) = num2cell(A{k}); 
end 

% save the data 
xlswrite('output.txt',B) 

的代碼假設你在每個文件一列,否則將無法正常工作。