Making a list from two arrays

4 views (last 30 days)
Julien
Julien on 12 Aug 2014
Commented: Julien on 12 Aug 2014
I'm relatively new to coding, and have no clue how I would pull the following off.
Say I have two vectors: A = [a b c d] and B = [1 2 3 4].
I would like to make a function that takes these two as inputs and outputs exactly the following into a .txt file, curly brackets included:
{a->1,b->2,c->3,d->4}
I was thinking some kind of for loop, but I have no experience using them and no idea how I would set this up.
Thanks

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 12 Aug 2014
Edited: Azzi Abdelmalek on 12 Aug 2014
A = {'a' 'b' 'c' 'd'}
B = [1 2 3 4]
out='{'
for k=1:numel(B)
out=[out sprintf('%s->%d,',A{k},B(k))]
end
out(end)='}'
%or
A = {'a' 'b' 'c' 'd'}
B = [1 2 3 4]
out=['{' strjoin(cellfun(@(x,y) sprintf('%s->%d',x,y),A,num2cell(B),'un',0),',') '}']
  1 Comment
Julien
Julien on 12 Aug 2014
Thanks, this works exactly as I wanted it to.

Sign in to comment.

More Answers (1)

Evan
Evan on 12 Aug 2014
Edited: Evan on 12 Aug 2014
How about this?
A = 'abcd';
B = [1 2 3 4];
fid = fopen('my_txt_file','w');
s = [];
for i = 1:numel(A)
s = [s sprintf('%s->%d,',A(i),B(i))];
end
s = ['{' s(1:end-1) '}'];
fprintf(fid,s);
fclose(fid)

Categories

Find more on Loops and Conditional Statements 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!