How to print result in MATLAB?
조회 수: 132 (최근 30일)
이전 댓글 표시
Dear everyone,
Please help me to solve this problem. I have two arrays like this:
Name=['ABC-8' 'S8' 'EG8'];
Thick=[25 16 12];
I want to create an array like this:
Z=['ABC-825' 'S816' 'EG812'];
Can anyone help me to write a code to make that array?
Thank you so much!
댓글 수: 0
채택된 답변
Aniruddha Phatak
2014년 8월 21일
Robert is right, you must define it as a cell array.
name={'ABC-8' 'S8' 'EG8'};
thick=[25 16 12];
for i=1:3
thin{i} = [ num2str( thick(i) ) ];
z{i} = strcat(name{i},thin{i});
end
disp(z);
댓글 수: 0
추가 답변 (3개)
David Sanchez
2014년 8월 21일
define your Name array as a cell, then:
Name={'ABC-8' 'S8' 'EG8'};
Thick=[25 16 12];
Z =cell(numel(Name),1);
for k=1:numel(Name)
Z{k} = strcat(Name{k},num2str(Thick(k)));
end
>> Z
Z =
'ABC-825'
'S816'
'EG812'
Guillaume
2014년 8월 21일
편집: Guillaume
2014년 8월 21일
Assuming that Name is a cell array, that is
Name = {'ABC-8' 'S8' 'EG8'};
(otherwise as you wrote it, it's just a single string). Then:
Z = cellfun(@(s,n) sprintf('%s%d', s, n), Name, num2cell(Thick), 'UniformOutput', false);
will do it. Note that Z has to be a cell array.
Robert Cumming
2014년 8월 21일
The two answers on here are correct - however if you take the for loop from one and the sprintf from the other you get a faster result:
Z =cell(1,numel(Name));
for k=1:numel(Name)
Z{k} = sprintf ( '%s%d', Name{k}, Thick(k) );
end
Speed evidence:
clear
clc
Name={'ABC-8' 'S8' 'EG8'};
Thick=[25 16 12];
tic
ZA =cell(1,numel(Name));
for k=1:numel(Name)
ZA{k} = strcat(Name{k},num2str(Thick(k)));
end
toc
tic
ZB = cellfun(@(s,n) sprintf('%s%d', s, n), Name, num2cell(Thick), 'UniformOutput', false);
toc
tic
ZC =cell(1,numel(Name));
for k=1:numel(Name)
ZC{k} = sprintf ( '%s%d', Name{k}, Thick(k) );
end
toc
isequal ( ZA, ZB )
isequal ( ZA, ZC )
Elapsed time is 0.011248 seconds.
Elapsed time is 0.011344 seconds.
Elapsed time is 0.006111 seconds.
댓글 수: 3
Robert Cumming
2014년 8월 21일
For this type of question you could solve it in many ways....
I just highlight this as many people overlook the simple for loop and the fact that sprintf is the fastest way for handling strings...
참고 항목
카테고리
Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!