2017-06-20 83 views
0

我有三维速度数据,我从不同的时间步骤 导入到matlab中,然后将数据存储到单个数组中,因此例如,乘以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

使用bsxfuntimes这样的:

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

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

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

这应该做的,但我相信有是一种更优雅的方式

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

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

相关问题