预定义行矩阵的一个元素,其中通过等式创建其他元素

时间:2014-03-24 10:48:13

标签: matlab

我有一个通过等式

创建的矩阵
for xxx = 1 : xMid_p - 2
   ln_p(1,xxx) = abs(radius_p(1,1) - radius_p(xxx+1));
end 

但是我需要这个等式作为其第一个元素为零。我知道我可以通过

来做到这一点
ln_p(1,1) = 0;

但是我如何将它组合起来,因为第一个元素为零,而行矩阵的其余部分取自上面的等式。


解决方案:

这很简单,涉及将简单的1x1矩阵与ln_p矩阵连接起来。

lnZero(1,1) = 0

for xxx = 1 : xMid_p - 2
   ln_p(1,xxx) = abs(radius_p(1,1) - radius_p(xxx+1));
end 

ln_p = horzcat(lnZero,ln_p)

2 个答案:

答案 0 :(得分:1)

肮脏的把戏可能;在循环中使用它 -

ln_p(1,xxx) = (xxx~=1).*(abs(radius_p(1,1) - radius_p(xxx+1)));

答案 1 :(得分:0)

只需使用矢量化索引和简单的水平连接:

ln_p(1, 1:xMid_p-1) = [0  abs(radius_p(1)-radius_p(2:xMid_p-1))];

如果您的ln_p在循环前为空且radius_p的元素长度恰好为xMid_p-1,则可以将其简化为:

ln_p = [0  abs(radius_p-radius_p(1))];