How to create a vector out of arrays

조회 수: 16 (최근 30일)
Erica
Erica 2014년 7월 15일
댓글: José-Luis 2014년 7월 15일
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?

채택된 답변

José-Luis
José-Luis 2014년 7월 15일
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
Erica
Erica 2014년 7월 15일
Yes! This is perfect! I understand why you think this is a bad idea, but I have a purpose behind my madness. Thanks!!
José-Luis
José-Luis 2014년 7월 15일
Fair enough. Glad to help.

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Ben11
Ben11 2014년 7월 15일
편집: Ben11 2014년 7월 15일
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.
  댓글 수: 1
Erica
Erica 2014년 7월 15일
Yeah - I had trouble wording what I was after ... Yes, I literally want a Vector Named A and to have it's contents be 1 and 5 so that I can access A(0) and get 1 or A(1) and get 5... Do you see what I mean??

댓글을 달려면 로그인하십시오.


James Tursa
James Tursa 2014년 7월 15일
편집: James Tursa 2014년 7월 15일
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.

Azzi Abdelmalek
Azzi Abdelmalek 2014년 7월 15일
This is not a good idea.
Data1 = [1 2 3 4]
Data2 =[5,6,7,8]
Just create one variable
A=[Data1' Data2']

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by