How to create a vector out of arrays
15 views (last 30 days)
Show older comments
Given the Following arrays:
Header = ('A' 'B' 'C' 'D')
Data1 = ( 1 2 3 4)
Data2 = (5,6,7,8)
I want to create the following Vectors:
A = (1 ,5)
B = (2, 6)
C = (3, 7)
D = (4, 8)
My attempt was this: for I = 1:length(Header) NewVector = [Header(i), ' = [Data1(i) Data2(i)]']; eval(NewVector); end
My error is: Undefined function 'eval' for input arguments of type 'cell'.
Help?
0 Comments
Accepted Answer
José-Luis
on 15 Jul 2014
Header = {'A' 'B' 'C' 'D'};
Data1 = [1 2 3 4];
Data2 = [5,6,7,8];
cnt = 1;
for ii = Header
assignin('base',ii{:},[Data1(cnt) Data2(cnt)]);
cnt = cnt + 1;
end
This is a bad idea though, you'd be better off storing in a cell array instead of dynamically creating variables.
2 Comments
More Answers (3)
Ben11
on 15 Jul 2014
Edited: Ben11
on 15 Jul 2014
Try this:
clear all
clc
Header = {'A' 'B' 'C' 'D'};
Data1 = [1 2 3 4];
Data2 = [5,6,7,8];
NewVector = cell(1,numel(Header));
for i = 1:numel(Header)
NewVector{i} = sprintf('%s = (%i,%i)',Header{i},Data1(i),Data2(i));
end
NewVector
NewVector =
Columns 1 through 3
'A = (1,5)' 'B = (2,6)' 'C = (3,7)'
Column 4
'D = (4,8)'
Now each cell of the NewVector cell array contains what you want.
I must say that your question was not that clear so if it's not what you are looking for please don't hesitate to ask for details/clarify your question. For instance do you want every element to literally contain a letter with an equal sign and then a pair of numbers, or simply the pair of numbers? If so then you would not have to use cell arrays.
James Tursa
on 15 Jul 2014
Edited: James Tursa
on 15 Jul 2014
I am guessing that Header is a cell array of strings, even though you have typed it in your post using parentheses ( ) instead of curly braces { }. If that is the case, try this instead using curly brace {i} instead of parentheses (i):
[Header{i}, ' = [Data1(i) Data2(i)]']
I.e., use the curly braces to extract the string from Header before combining with the rest of the string. That way you will get a string result instead of a cell result.
Advice: In the future, post your exact code so people can have a chance to correct your syntax. By using parentheses ( ) in your post instead of the exact code { } and [ ], you unintentionally mislead the readers.
0 Comments
Azzi Abdelmalek
on 15 Jul 2014
This is not a good idea.
Data1 = [1 2 3 4]
Data2 =[5,6,7,8]
Just create one variable
A=[Data1' Data2']
0 Comments
See Also
Categories
Find more on Whos in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!