How do I fix this error?

조회 수: 1 (최근 30일)
Byungho
Byungho 2024년 4월 4일
댓글: Walter Roberson 2024년 8월 25일
deltat=0.1;
nsamples=2^10;
fs=1/deltat;
time=[0 : deltat : deltat*(nsamples-1)];
psdtot(1:nsamples/2+1) = zeros(1,nsamples/2+1);
nblock = 10;
for k=1:nblock
for i=1: nsamples
ydata(i,:) =5+10*cos(2*pi*time+pi/6)+15* randn(1);
end
[pxx,f] = periodogram(ydata,rectwin(nsamples),nsamples,fs);
size(psdtot)
size(pxx)
psdtot = psdtot + pxx/nblock;
end
ans = 1x2
1 513
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
ans = 1x2
513 1024
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
Arrays have incompatible sizes for this operation.
figure(1);
plot(time,ydata);
I'm trying to generate Gaussian noise from x(t)=5+10*cos(2*pi*t+pi/6)+G(sigma,t)
G(sigma,t) is Gaussian noise with a standard deviation of 15 (sigma G=15), detat=0.1(s), and nsample=2^10.
It is the start of calculating Power Spectral Density with FFT.
The overall variance of the signal is (sigma g)^2+(A)^2/2 as expected.
The generated random signal should be sinusoidal because X(t) has the cosine factor.
  댓글 수: 1
Torsten
Torsten 2024년 4월 4일
You cannot add arrays of size 1x513 and 513x1024 (see above).

댓글을 달려면 로그인하십시오.

채택된 답변

cui,xingxing
cui,xingxing 2024년 4월 5일
편집: cui,xingxing 2024년 4월 27일
You should make sure that the array dimensions in the arithmetic are consistent, for example I changed your psdtot variable to a column vector. As far as I remember, matlab supports automatic dimension expansion since R2016a/b.
deltat=0.1;
nsamples=2^10;
fs=1/deltat;
time=[0 : deltat : deltat*(nsamples-1)];
psdtot(1:nsamples/2+1) = zeros(1,nsamples/2+1);
psdtot = psdtot(:); % here
nblock = 10;
for k=1:nblock
for i=1: nsamples
ydata(i,:) =5+10*cos(2*pi*time+pi/6)+15* randn(1);
end
[pxx,f] = periodogram(ydata,rectwin(nsamples),nsamples,fs);
psdtot = psdtot + pxx/nblock;
end
figure(1);
plot(time,ydata);
-------------------------Off-topic interlude, 2024-------------------------------
I am currently looking for a job in the field of CV algorithm development, based in Shenzhen, Guangdong, China. I would be very grateful if anyone is willing to offer me a job or make a recommendation. My preliminary resume can be found at: https://cuixing158.github.io/about/ . Thank you!
Email: cuixingxing150@gmail.com
  댓글 수: 1
Derek
Derek 2024년 4월 9일
편집: Derek 2024년 4월 9일
So using this data provided how do you plot the psd vs frequency? In a log log plot. Do you have to do the fgts prior to the peridogram

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jose Sevilla
Jose Sevilla 2024년 8월 25일
Hola todos necesito ayuda con este gramento de codigo en Matlab 2024RA
% Inicialización de variables
distances = distance_start:distance_increment:distance_end;
Unrecognized function or variable 'distance_start'.
received_power_5 = zeros(1, num_measurements); % 5to piso
received_power_4 = zeros(1, num_measurements); % 4to piso
received_power_3 = zeros(1, num_measurements); % 3er piso
std_dev_5 = zeros(1, num_measurements); % Desviación estándar 5to piso
std_dev_4 = zeros(1, num_measurements); % Desviación estándar 4to piso
std_dev_3 = zeros(1, num_measurements); % Desviación estándar 3er piso
rmse = zeros(1, num_measurements); % Error medio cuadrático
k_factor = zeros(1, num_measurements); % Factor K
  댓글 수: 1
Walter Roberson
Walter Roberson 2024년 8월 25일
That code has the potential to work provided that
num_measurements = length(distances);
But if num_measurements is different than distances, then it seems most likely that you need more like
% Inicialización de variables
distances = (distance_start:distance_increment:distance_end).';
num_distances = length(distances);
received_power_5 = zeros(num_distances, num_measurements); % 5to piso
received_power_4 = zeros(num_distances, num_measurements); % 4to piso
received_power_3 = zeros(num_distances, num_measurements); % 3er piso
std_dev_5 = zeros(num_distances, num_measurements); % Desviación estándar 5to piso
std_dev_4 = zeros(num_distances, num_measurements); % Desviación estándar 4to piso
std_dev_3 = zeros(num_distances, num_measurements); % Desviación estándar 3er piso
rmse = zeros(num_distances, num_measurements); % Error medio cuadrático
k_factor = zeros(num_distances, num_measurements); % Factor K

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Correlation and Convolution에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by