EEstudent
EEstudent

Reputation: 3

how to read from file and display the data in desired rows in Matlab

I am trying to read from a file and display the data in rows 6, 11, 111 and 127 in Matlab. I could not figure out how to do it. I have been searching Matlab forums and this platform for an answer. I used fscanf, textscan and other functions but they did not work as intended. I also used a for loop but again the output was not what I wanted. I can now only read one row and display it. Simply I want to display all of them(data in rows given above) at the same time. How can I do that?

matlab code

n = [0 :1: 127];

%% Problem 1
figure
x1 = cos(0.17*pi*n)
%it creates file and writes content of x1 to the file
fileID = fopen('file.txt','w');
fprintf(fileID,'%d \n',x1);
fclose(fileID);
%line number can be changed in order to obtain wanted values. 
fileID = fopen('file.txt');
line = 6;
C = textscan(fileID,'%s',1,'delimiter','\n', 'headerlines',line-1);
celldisp(C)
fclose(fileID);

and this is the file

1 
8.607420e-01 
4.817537e-01 
-3.141076e-02 
-5.358268e-01 
-8.910065e-01 
-9.980267e-01 
-8.270806e-01 
-4.257793e-01 
9.410831e-02 
5.877853e-01 
9.177546e-01 
9.921147e-01 
7.901550e-01 
3.681246e-01 
-1.564345e-01 
-6.374240e-01 
-9.408808e-01 
-9.822873e-01 
-7.501111e-01 
-3.090170e-01 
2.181432e-01 
6.845471e-01 
9.602937e-01 
9.685832e-01 
7.071068e-01 
2.486899e-01 
-2.789911e-01 
-7.289686e-01 
-9.759168e-01 
-9.510565e-01 
-6.613119e-01 
-1.873813e-01 
3.387379e-01 
7.705132e-01 
9.876883e-01 
9.297765e-01 
6.129071e-01 
1.253332e-01 
-3.971479e-01 
-8.090170e-01 
-9.955620e-01 
-9.048271e-01 
-5.620834e-01 
-6.279052e-02 
4.539905e-01 
8.443279e-01 
9.995066e-01 
8.763067e-01 
5.090414e-01 
-4.288121e-15 
-5.090414e-01 
-8.763067e-01 
-9.995066e-01 
-8.443279e-01 
-4.539905e-01 
6.279052e-02 
5.620834e-01 
9.048271e-01 
9.955620e-01 
8.090170e-01 
3.971479e-01 
-1.253332e-01 
-6.129071e-01 
-9.297765e-01 
-9.876883e-01 
-7.705132e-01 
-3.387379e-01 
1.873813e-01 
6.613119e-01 
9.510565e-01 
9.759168e-01 
7.289686e-01 
2.789911e-01 
-2.486899e-01 
-7.071068e-01 
-9.685832e-01 
-9.602937e-01 
-6.845471e-01 
-2.181432e-01 
3.090170e-01 
7.501111e-01 
9.822873e-01 
9.408808e-01 
6.374240e-01 
1.564345e-01 
-3.681246e-01 
-7.901550e-01 
-9.921147e-01 
-9.177546e-01 
-5.877853e-01 
-9.410831e-02 
4.257793e-01 
8.270806e-01 
9.980267e-01 
8.910065e-01 
5.358268e-01 
3.141076e-02 
-4.817537e-01 
-8.607420e-01 
-1 
-8.607420e-01 
-4.817537e-01 
3.141076e-02 
5.358268e-01 
8.910065e-01 
9.980267e-01 
8.270806e-01 
4.257793e-01 
-9.410831e-02 
-5.877853e-01 
-9.177546e-01 
-9.921147e-01 
-7.901550e-01 
-3.681246e-01 
1.564345e-01 
6.374240e-01 
9.408808e-01 
9.822873e-01 
7.501111e-01 
3.090170e-01 
-2.181432e-01 
-6.845471e-01 
-9.602937e-01 
-9.685832e-01 
-7.071068e-01 
-2.486899e-01 
2.789911e-01 

Upvotes: 0

Views: 62

Answers (1)

Aero Engy
Aero Engy

Reputation: 3608

Assuming the file is not exceedingly large, the simplest way would probably be read the entire file & index the output to your desired lines.

line = [6 11 111 127];
fileID = fopen('file.txt');
C = textscan(fileID,'%s','delimiter','\n');
fclose(fileID);
disp(C{1}(line))

Upvotes: 1

Related Questions