How to create a vector out of arrays
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Erica
am 15 Jul. 2014
Kommentiert: José-Luis
am 15 Jul. 2014
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 Kommentare
Akzeptierte Antwort
José-Luis
am 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 Kommentare
Weitere Antworten (3)
Ben11
am 15 Jul. 2014
Bearbeitet: Ben11
am 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
am 15 Jul. 2014
Bearbeitet: James Tursa
am 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 Kommentare
Azzi Abdelmalek
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Interactive Control and Callbacks finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!