こんにちは、マトリックスに問題があります..
行数が異なる多くの .txt ファイルがありますが、列数は同じ (1 列) です。
e.g. s1.txt = 1234 rows
s2.txt = 1200 rows
s2.txt = 1100 rows
3つのファイルを結合したかったのです。行が異なるため..新しいファイルに書き込むと、このエラーが発生しました=インデックスがマトリックスの次元を超えています。
どうすればこの問題を解決できますか? .
3 つの行列を積み重ねるだけで組み合わせることができs1
ます。
snew = [s1; s2; s3];
[]
一度だけ行う必要がある場合は、新しいマトリックス変数を作成せずにスタイル スタッキングを使用することもできます。
問題を正確に診断するには、提供した情報が少なすぎます。ファイルからワークスペースの変数にデータを読み込んでいる可能性があります。おそらくs1
、1 列と 1234 行などがあります。次に、変数を次のように 1 つの列ベクトルに連結できます。
totalVector = [s1; s2; s3];
save()
ステートメントを含むファイルに書き出します。
それは役に立ちますか?
この質問があなたの別の質問に関連していて、それらの行列を列ごとに結合し、データの少ない列に空の値を残したいと仮定しましょう。
この場合、次のコードが機能するはずです。
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 つの列があることを前提としています。それ以外の場合は機能しません。