2017-02-23 128 views
0

允许我使用下面的示例从: How do i replace all elements of a vector with a scalar我如何用一个值替换矢量的所有元素?

它说:

我有一个载体(或阵列)

A = [2 3 4; 1 3 2]

我要替换的每个行中的所有元素与最后一个元素。下面的代码按照OP的建议工作。

for ii = 1: size(A, 1) 
    B(ii,:) = A(ii,3) 
end 

返回:B = [4; 2]。然而,在我的情况下,我想检索结果,使得原始变量A(而不是B)返回为A = [4; 2]。我试图复制BA但它给我我原来的阵列A而不是预期的结果。

回答

0

你应该只能够循环

for ii = 1:size(A, 1) 
    B(ii, :) = A(ii, end); 
end 

A = B; 

后分配BA或者你也可以消除环路的全在一起,只要抓住的A

A = A(:, end); 

最后一栏如果您想要替换,全部A每行的元素与每行最后一列中的值您可以改为:

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

谢谢@Suever。这个问题是我需要'A'来进行循环内的进一步计算。有一系列IF语句决定是否应该替换第一,第二或第三个元素,然后在循环内进一步使用结果。有没有办法可以将'B'复制到循环中的'A'? – oma11

+2

@ oma11你不能吃蛋糕,也可以拿它,要么保留'A',要么改变它。这个答案中的第二个例子应该就是你想要的。简单地说,不是将它分配回'A',而是直接在需要这个值的地方放置表达式'A(:,end)'。 – EBH

+0

@EBH这是一个很棒的观察。第二个代码完美工作。非常感谢。谢谢** Suever **的帮助。 – oma11

0

简化无效冗余元素。

A = [2 3 4; 1 3 2]; 

A(:,1:end-1)=[] 

结果:

A = 

    2  3  4 
    1  3  2 

A = 

    4 
    2 
+0

谢谢你的建议。它工作正常,但不在循环中。我同意我可以没有循环,但是可惜我没有提到循环已经存在于'A'之前,因此我只能在循环中有'A'。 – oma11

相关问题