向矩阵添加行

时间:2012-10-13 10:02:18

标签: matlab row add

我有一个来自文本文件的矩阵2x20 我想在该矩阵中添加一行

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

它有什么问题,如何解决?

3 个答案:

答案 0 :(得分: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]

或者,如果输入数据包含数字而不是文本,则可能需要将单元格数组转换为矩阵:

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]

答案 1 :(得分:0)

不像现在那样读取字符串,而是尝试简单地读取数字(即 - 如果您的数据是数字)。只需将%s参数省略到textread

即可
twopts = textread('input.txt');
ones_row = ones(1,20);
twopts = [twopts; ones_row];

答案 2 :(得分:0)

如果您的数据是数字,您可以尝试使用

  
    

twopts = importdata('input.txt');

         

ones_row = ones(1,20);

         

twopts = [twopts; ones_row];