将每列中的第一个值乘以MATLAB

时间:2017-06-20 15:37:11

标签: matlab

我有3D速度数据,我从不同的时间步骤导入到matlab中 然后将数据存储到单个数组中,例如

A = 
1.9003018979277591      3.9313938050246353      1.9550611401555038      4.4729389195345890     -0.1923084604908526
1.9079954278788835      3.9313938050246353      1.9236081195213699      4.4656360727573148     -0.2883623514359477
1.9156889578300083      3.9313938050246353      1.8600046726104833      4.4633941493518368     -0.3745597398775253
1.9233824877811327      3.9313938050246353      1.7774536511804597      4.4684591066449331     -0.4468743057900739
1.9310760177322572      3.9313938050246353      1.6785880816271836      4.4792352570817320     -0.5015682599033333
1.9387695476833817      3.9313938050246353      1.5789717220681783      4.5015318412785614     -0.5414950892833046
1.9464630776345062      3.9313938050246353      1.4803758914752310      4.5382688538970140     -0.5671639103123366
1.9541566075856309      3.9313938050246353      1.3954540252731027      4.5972897305115961     -0.5822441272159316
1.9618501375367554      3.9313938050246353      1.3209857949421817      4.6788923156623099     -0.5844651059587465

上面的数据是一个单独的数组,它包含一系列时间步长的所有V速度值。我想现在将每列的第一个值乘以下,例如1.9003 * 1.907,然后是1.9003 * 1.915,所以对于下一列和任意数量的列都是一样的。我想将这些值存储到另一个单个数组中。我需要一些关于如何进行乘法的帮助。

2 个答案:

答案 0 :(得分:2)

bsxfuntimes一起使用,如下所示:

req = bsxfun(@times, A(1,:),A(2:end,:));

如果你有MATLAB R2016b或更高版本,你可以使用这样的隐式扩展:

req = A(1,:) .* A(2:end,:);

答案 1 :(得分:1)

这应该做,虽然我确信有更优雅的方式

B = repmat(A(1,:), size(A, 2), 1); C = A;
C(2:end,:) = A(2:end,:).*B(2:end,:);

A是您的初始矩阵,C是您的最终答案。