How to populate 2D array from 2 vectors perpendicular to each other?
Show older comments
I have 2 files. Each file contains 4 columns. Column 1, 2 and 3 define the location of a point in x, y, and z-axis respectively, on a Cartesan coordinate. Column 4 is the Value of that point. 'Inline' and 'Crossline' are perpendicular to each other and intersect at (0,0) coordinate. How do I populate a 2D array from these 2 files? (The data below are simplified. The real data has finer resolution)
Inline =
2.800000 0 15.0000 1.3678
1.000000 0 15.0000 1.2000
0 0 15.0000 1.0000
-1.000000 0 15.0000 1.2000
-2.500000 0 15.0000 1.5688
Crossline =
0 -2.300000 15.0000 1.3546
0 -1.000000 15.0000 1.1000
0 0 15.0000 1.0000
0 1.000000 15.0000 1.1500
0 2.700000 15.0000 1.3558
7 Comments
Matt J
on 9 Jan 2013
Populate it based on what rule?
Yun Inn
on 9 Jan 2013
Matt J
on 10 Jan 2013
Show the expected output given the simplified example data you gave above.
Walter Roberson
on 10 Jan 2013
The sample matrices do not represent vectors.
Yun Inn
on 10 Jan 2013
Walter Roberson
on 10 Jan 2013
Each of those groups is "V-shaped"; the inputs are not "two vectors perpendicular to each other".
Yun Inn
on 10 Jan 2013
Accepted Answer
More Answers (1)
Walter Roberson
on 10 Jan 2013
[a,b] = ndgrid(A(:,1), B(:,2));
c = bsxfun(@times, A(:,4), B(:,4).');
Output = [a(:), b(:), A(:,3)*ones(size(A,1)*size(B,1),1), c(:)];
1 Comment
Andrei Bobrov
on 10 Jan 2013
Edited: Andrei Bobrov
on 10 Jan 2013
[a,b,c] = ndgrid(A(:,1), B(:,2), A(:,3));
d = A(:,4)*(B(:,4).');
Output = [a(:), b(:), c(:), d(:)];
Categories
Find more on Function Creation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!