Finding the Power density function

2 visualizaciones (últimos 30 días)
Christina Reid
Christina Reid el 3 de Feb. de 2021
Respondida: Vidhi Agarwal el 21 de Mayo de 2024
I am trying to find the power density function of the 8 datasets, attached below. Can anyone help me?
  3 comentarios
Hiro Yoshino
Hiro Yoshino el 3 de Feb. de 2021
Basic approach could be FFT.
Also if you have any question on your code, you should use code format from the tooltip like this:
a = 1
b = 2
x = 1:10
y = sin(a*x)
Also you may want to have a good read of the guideline to get answers quickly.
Christina Reid
Christina Reid el 3 de Feb. de 2021
Thank you. I got the PDF, but still having issues with the for loop. I tried indexing it, but now I get all 0's in colums 2-7....
%% import packages %%
%pkg load statistics
%pkg load signal
%% import values %%
fid=fopen('Data1.txt','r');
data1=fscanf(fid,'%f');
fclose(fid);
fid=fopen('Data2.txt','r');
data2=fscanf(fid,'%f');
fclose(fid);
fid=fopen('Data3.txt','r');
data3prime=fscanf(fid,'%f');
fclose(fid);
data3=zeros(10000,1);
for i= (1:20000);
if mod(i,2)==0;
x=i*0.5;
data3(x)=data3prime(i);
end
end
fid=fopen('Data4.txt','r');
data4=fscanf(fid,'%f');
fclose(fid);
fid=fopen('Data5.txt','r');
data5prime=fscanf(fid,'%f');
fclose(fid);
data5=zeros(10000,1);
for i= (1:20000);
if mod(i,2)==0;
x=i*0.5;
data5(x)=data5prime(i);
end
end
fid=fopen('Data6.txt','r');
data6=fscanf(fid,'%f');
fclose(fid);
fid=fopen('Data7.txt','r');
data7=fscanf(fid,'%f');
fclose(fid);
fid=fopen('Data8.txt','r');
data8=fscanf(fid,'%f');
fclose(fid);
%dataset = [data1,data2, data3, data4, data5, data6, data7,data8]
%% Plot Signal %%
x = (1:10000);
%plot(x,data8(1:10000));
%title('Data8');
%hold on;
%plot(x,data2(1:1000));
%plot(x,data3(1:1000));
%plot(x,data4(1:1000));
%plot(x,data5(1:1000));
%plot(x,data6(1:1000));
%plot(x,data7(1:1000));
%plot(x,data8(1:1000));
%legend('data1','data2','data3','data4','data5','data6','data7','data8');
%hold off;
%PDF = []
%% Probality Density Functions
% finding the PDF for each column
PDF = fft(dataset)
%% Statistical Moment (Mean,StandardDeviation,Skewness and Kurtosis(AKA Flatness Factor))
% col = dataset(:,1:8);
% p1(i) = dataset(i)(:,1)
%% Standard Deviation %%
for i = size(dataset,2)
dataset = [data1,data2, data3, data4, data5, data6, data7,data8];
col(:,i) = dataset(:,i)
end

Iniciar sesión para comentar.

Respuestas (1)

Vidhi Agarwal
Vidhi Agarwal el 21 de Mayo de 2024
Hi Christina Reid,
I understand that you are not getting expected output while printing columns of dataset. This is happening because of the following reasons:
  • This loop, due to its condition i = size(dataset,2), does not actually loop in the traditional sense. It sets i" to the number of columns in dataset and then runs the body of the loop once with i being that value. If dataset initially has 8 columns, i" is set to 8.
  • “col(:,i) = dataset(:,i) attempts to copy the i-th column of dataset into col. However, since i is only the last column's index due to the loop's setup, this operation only copies the last column.
To enhance the code and avoid the unintended redefinition of "dataset" inside the loop, you should move the construction of the "dataset" matrix outside and before the loop. This ensures that "dataset" is defined only once, and the loop is then used solely for processing each column of this dataset.
Modified Code of “for” loop will look like:
dataset = [data1,data2, data3, data4, data5, data6, data7,data8];
for i = 1:size(dataset,2)
col(:,i) = dataset(:,i)
end

Categorías

Más información sobre Logical en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by