2

テキスト ファイルから行列 2x20 があり、
その行列に 1 の行を追加したい

twopts = reshape(textread('input.txt', '%s'),2,20); % 2 by 20
ones_row = ones(1,20);   %1 by 20 of ones

twopts = [twopts;ones_row]

エラーが表示されます:

「vertcat CAT 引数の次元を使用したエラーは一貫していません。」

しかし、マトリックスの次元は一致します... 2x20 と 1x20 を 3x20 にします

何が問題で、どうすれば修正できますか?

4

3 に答える 3

2

twoptsは文字列のセル配列でありones_row、行列です。これらをまとめることはできません。

これはあなたが望むことをしますか?

twopts = reshape(textread('input.txt', '%s'),2,20); % 2 by 20
ones_row = ones(1,20);   %1 by 20 of ones
ones_row = mat2cell(ones_row, 1, ones_row); % convert to cell array

twopts = [twopts;ones_row]

または、入力データにテキストではなく数値が含まれている場合は、代わりに cell 配列を行列に変換することができます。

twopts = reshape(textread('input.txt', '%s'),2,20); % 2 by 20
twopts = cellfun(@str2num,twopts);
ones_row = ones(1,20);   %1 by 20 of ones

twopts = [twopts;ones_row]
于 2012-10-13T10:18:26.870 に答える
0

データが数値の場合は、

twopts = importdata('input.txt');

ones_row = ones(1,20);

twopts = [twopts; ones_row];

于 2012-10-13T13:59:25.697 に答える
0

現在のように文字列を読み取る代わりに、単純に数値を読み取るようにしてください (つまり、データが数値の場合)。%sパラメータを省略して次のようにしtextreadます。

twopts = textread('input.txt');
ones_row = ones(1,20);
twopts = [twopts; ones_row];
于 2012-10-13T11:13:08.120 に答える