# plotting x[n] with various points from a file

10 views (last 30 days)
Jorge Avila on 27 Oct 2020
Answered: Alan Moses on 29 Oct 2020
So I have an assignment that requires to do this. I have only started on point number 1.
I also have a txt file named: 'signal.txt' that has a whole bunch of points like so:
5.2529
5.2530
5.2531
5.2534
5.2539
5.2544
5.2550
5.2558
5.2567
5.2577
5.2588
5.2601
5.2615
5.2630
5.2646
5.2663
5.2682
etc.....
1. The input signal ๐ฅ[๐] is contained in a text file: signal.txt. The data format is โ%1.4f\nโ and there are 1028 samples. Write the code to read these 1028 values into a floating-point array. Plot the signal ๐ฅ[๐].
2. Write code to calculate the 1028-point DFT of the signal of ๐ฅ[๐]: ๐1(๐)=ฮฃ๐ฅ[๐]๐๐2๐๐๐๐๐โ1๐=0
3. Plot the magnitude and phase of ๐1(๐).
Below is my code, but what I am having trouble with is plotting x[n] (on point number 1 with the various points). I do not know how to really plot x[n]. I am confused on how long the horizontal axis is going to be and the compiler keeps throwing an error since the arguments inside stem() have to be the same size. Thank you and any help is appreciated.
% Jorge Avila - 1001543128
clc
clear
close all
% This project will require you to implement the DFT computation for a
% given signal in a MATLAB script and compare your output to the output of
% the MATLAB fft() function.
% formatSpec = '%1.4f\n';
formatSpec = '%f';
fp = fopen('signal.txt','r');
numberArray = fscanf(fp,formatSpec);
arraySize = size(numberArray);
% plot x[n]
subplot(2,2,1);
% maybe do a for loop????????
stem(1028, numberArray);
% really do not care what the x & y labels are.
xlabel('n and k values');
ylabel('x[n] and X[k]');
title('Plot of number generated');
% close the file pointer
fclose(fp);

Alan Moses on 29 Oct 2020
Stem function requires both X and Y inputs to be vectors or matrices of the same size. You may use the following line of code:
stem(1:arraySize, numberArray);