How do I put all of the strcat outputs in the same cell array (group) without having the code rewrite over the last output over and over again?
    조회 수: 9 (최근 30일)
  
       이전 댓글 표시
    
Hi, I'm trying to create a group of characters that has the month (in 3 letters) and the date. ex) Jan22, Feb23, Mar21
When I run this code, only the last output is saved under FileName. In this case, xxx01 is the last output, so that's what is saved under FileName.
I think the outputs keep on getting written on top of each other. It's my first time working with MATLAB, so I understand that my code might be unnecessarily long.
How do I put all of the strcat outputs in the same cell array (group) without having the code rewrite over the last output over and over again?
%set month and date vectors
month=['JanFebMarAprxxx']; %had to attach them bc k reads one alphabet as one column / xxx is bc MATLAB gives error message without it
max_date=[31 28 31 30];
%set constants
%month index (this reads one alphabet as one column)
k=1;
%date starts from 1
q=1;
%max_date index
m=1;
%saving separate files as ex)"Jan22"
for i=18:24:3000
    %i+24 cannot exceed 2378, so i needs to be less than 2355
    %I didn't attach this file here, so please disregard this ---------------------------
    %if i<2355
    %DataAdj=HoboData(i:(i+24),1)-hoboAB1;
    %else
    %end
    %------------------------------------------------------------------------------------
    %This code should give outputs such as 'Jan01', 'Feb28', and so on
    if q<10 %if the date is less than 10
        FileName=strcat(month(k),month(k+1),month(k+2),'0',num2str(q));
        save FileName %DataAdj
        clear FileName %DataAdj
        q=q+1; %increase last date by 1
    elseif q<=max_date(m) %if the date is less or equal to the max date (ex. 31, 28, 31, 30)
        FileName=strcat(month(k),month(k+1),month(k+2),num2str(q));
        save FileName %DataAdj
        clear FileName %DataAdj
        q=q+1; %increase last date by 1
    else
        q=1; %start date from 1 again
        m=m+1; %max_date index increase by 1
        %because there is no data after april, we have to limit k to k<4
        k=k+3;
    end
end
댓글 수: 2
  Walter Roberson
      
      
 2020년 8월 1일
				months = {'Jan', 'Feb', 'Mar, 'Apr'};
FileName = sprintf('%s%02d', months{k}, q);
save(Filename);
답변 (1개)
  Harsha Priya Daggubati
    
 2020년 7월 31일
        Hi,
You can simply concatenate the new String to Filename as follows each time while assigning. This gives a FileName concatenated with all the strings you create.
%set month and date vectors
month=['JanFebMarAprxxx']; %had to attach them bc k reads one alphabet as one column / xxx is bc MATLAB gives error message without it
max_date=[31 28 31 30];
FileName = [];
%set constants
%month index (this reads one alphabet as one column)
k=1;
%date starts from 1
q=1;
%max_date index
m=1;
%saving separate files as ex)"Jan22"
for i=18:24:3000
    %i+24 cannot exceed 2378, so i needs to be less than 2355
    %I didn't attach this file here, so please disregard this ---------------------------
    %if i<2355
    %DataAdj=HoboData(i:(i+24),1)-hoboAB1;
    %else
    %end
    %------------------------------------------------------------------------------------
    %This code should give outputs such as 'Jan01', 'Feb28', and so on
    if q<10 %if the date is less than 10
        FileName=[FileName ,' ' ,strcat(month(k),month(k+1),month(k+2),'0',num2str(q))];
        q=q+1; %increase last date by 1
    elseif q<=max_date(m) %if the date is less or equal to the max date (ex. 31, 28, 31, 30)
        FileName=[FileName ,' ', strcat(month(k),month(k+1),month(k+2),num2str(q))];
        q=q+1; %increase last date by 1
    else
        q=1; %start date from 1 again
        m=m+1; %max_date index increase by 1
        %because there is no data after april, we have to limit k to k<4
        k=k+3;
    end
end
result = split(FileName)
Later you can use split on FileName, to get all the values.
댓글 수: 2
  Harsha Priya Daggubati
    
 2020년 8월 3일
				I guess FileName doesn't show up since you are trying to clear the variable using 'clear'. Try removing 'clear' command and see.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


