在MATLAB中更改矩阵的每一行中的某些值

时间:2014-03-25 14:47:49

标签: matlab matrix indexing

假设我有一个这样的矩阵 -

A = 1 2 3 4;
    5 6 7 8

我想更改每一行中的某些值,但我想保留其中的一些,例如我想在每行0和第二个元素1中创建第一个元素。但是,我想保留原来的其余部分。结果将是这样的 -

A = 0 1 3 4; 
    0 1 7 8 

感谢。

3 个答案:

答案 0 :(得分:0)

在您的示例中,您想要更改给定列的每一行(即A(:,column)= newValue)

A = [1 2 3 4; 5 6 7 8]
A(:,1) = 0; A(:,2) = 1;

>> A

A =

 0     1     3     4
 0     1     7     8

答案 1 :(得分:0)

要更改每行中的某些值,您可以使用A(row,:) = newValue;

在您的示例中,您应该使用A(1,:) = 0;A(2,:) = 1;

答案 2 :(得分:0)

One-liner

A(:,1:2) = repmat([0 1],[size(A,1) 1]) 

修改1:此外,如果您想将最后一列更改为某个数字9,请使用此 -

A(:,[1:2 end]) = repmat([0 1 9],[size(A,1) 1]) 

编辑2: 如果您想扩展更多列数,您可以创建一个列索引数组和另一个新值的数组。此代码可能有助于您理解 -

column_array = [1 2 6 7 8];
new_values_for_columns = [ 0 1 2 3 4];
A(:,column_array) = repmat(new_values_for_columns,[size(A,1) 1])