1

こんにちは、マトリックスに問題があります..

行数が異なる多くの .txt ファイルがありますが、列数は同じ (1 列) です。

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

3つのファイルを結合したかったのです。行が異なるため..新しいファイルに書き込むと、このエラーが発生しました=インデックスがマトリックスの次元を超えています。

どうすればこの問題を解決できますか? .

4

3 に答える 3

2

3 つの行列を積み重ねるだけで組み合わせることができs1ます。

snew = [s1; s2; s3];

[]一度だけ行う必要がある場合は、新しいマトリックス変数を作成せずにスタイル スタッキングを使用することもできます。

于 2010-06-03T14:29:39.530 に答える
1

問題を正確に診断するには、提供した情報が少なすぎます。ファイルからワークスペースの変数にデータを読み込んでいる可能性があります。おそらくs1、1 列と 1234 行などがあります。次に、変数を次のように 1 つの列ベクトルに連結できます。

totalVector = [s1; s2; s3];

save()ステートメントを含むファイルに書き出します。

それは役に立ちますか?

于 2010-06-03T14:30:45.827 に答える
0

この質問があなたの別の質問に関連していて、それらの行列を列ごとに結合し、データの少ない列に空の値を残したいと仮定しましょう。

この場合、次のコードが機能するはずです。

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)

このコードは、各ファイルに 1 つの列があることを前提としています。それ以外の場合は機能しません。

于 2010-06-03T16:28:30.310 に答える