How to remove a slash from fullfile?

9 Ansichten (letzte 30 Tage)
Wesser
Wesser am 12 Sep. 2022
Kommentiert: Hiro Yoshino am 13 Sep. 2022
I want the file path for wtf to read: 'C:\Users\jessi\Desktop\HydrusMC\Simulations\MC_1\Obs_Node.out'
but with the code as scripted below renders:
'C:\Users\jessi\Desktop\HydrusMC\Simulations\MC_\1\Obs_Node.out'
How do I drop the \ between the MC_ and the 1? I couldn't find any advise from other posts on this aspect of fullfile.
wtf= fullfile('C:\\','Users','jessi','Desktop','HydrusMC','Simulations','MC_',num2str(i),'Obs_Node.out');
  1 Kommentar
Stephen23
Stephen23 am 12 Sep. 2022
This has nothing to do with FULLFILE, you can simply concatenate them together:
['MC_',num2str(i)]
or use a string:
"MC_"+i

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Hiro Yoshino
Hiro Yoshino am 12 Sep. 2022
How about this?
wtf= fullfile('C:\\','Users','jessi','Desktop','HydrusMC','Simulations',("MC_"+num2str(1)),'Obs_Node.out')
wtf = "C:\\/Users/jessi/Desktop/HydrusMC/Simulations/MC_1/Obs_Node.out"
  2 Kommentare
Wesser
Wesser am 12 Sep. 2022
Worked! Thanks!
If it's ok to pile on a follow up questions....
I am getting the error:
Error using fgets
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in fgetl (line 32)
[tline,lt] = fgets(fid);
Error in Concentration (line 14)
x=fgetl(Node_conc);
in the below code. I posed this question yesterday and thought that resolving the file path issue would make the error go away, but it didn't. Any suggestions?Malab doesn't seem to like me using fgetl.... but why?
num_sim=1000; % Number of Monte Carlo Simulations
Node_CONC=zeros(57759,num_sim); %preallocation for output from all monte carlos
path=cell(1,num_sim);
for i=1:num_sim
wtf= fullfile('C:\\','Users','jessi','Desktop','HydrusMC','Simulations',("MC_"+num2str(i)),'Obs_Node.out');
Node_conc = fopen('wtf','r'); % Open monte carlo output file in Path (i)
skip_lines=11; %skip all the lines until the actually output data
for k=1:(skip_lines)
x=fgetl(Node_conc);
end
temp = fscanf(Node_conc,'%f',[5,57759]); %scan the matrix of data
TEMP = temp'; % transpose data
temp_Conc = TEMP(:,5); % select the 5th column (concentration)
Node_CONC(:,i) = temp_Conc(:); % save the concentration a new file, one column per iteration of loop
fclose(Node_conc);
end
%Node_CONC(:,1)=temp(:,2)
Hiro Yoshino
Hiro Yoshino am 13 Sep. 2022
wtf= fullfile('C:\\','Users','jessi','Desktop','HydrusMC','Simulations',("MC_"+num2str(i)),'Obs_Node.out');
Node_conc = fopen('wtf','r'); % Open monte carlo output file in Path (i)
You should pass the content of "wtf" to the function fopen.
In this case, you are passing the character array of 'wtf'.
You can tell the difference by checking out these as follows:
'wtf'
ans = 'wtf'
wtf= fullfile('C:\\','Users','jessi','Desktop','HydrusMC','Simulations',("MC_"+num2str(i)),'Obs_Node.out')
wtf = "C:\\/Users/jessi/Desktop/HydrusMC/Simulations/MC_0+1i/Obs_Node.out"

Melden Sie sich an, um zu kommentieren.


Voss
Voss am 12 Sep. 2022
Combine the 'MC_' and the i into a single argument.
Like this:
wtf= fullfile('C:\','Users','jessi','Desktop','HydrusMC','Simulations',['MC_' num2str(i)],'Obs_Node.out');
Or this:
wtf= fullfile('C:\','Users','jessi','Desktop','HydrusMC','Simulations',sprintf('MC_%d',i),'Obs_Node.out');
  1 Kommentar
Wesser
Wesser am 12 Sep. 2022
Thank you. These worked as well as the method suggested above.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by