Code Results?
1 view (last 30 days)
Show older comments
Hi,
I have the following code ,but I have a problem in the results,that Mz is just single value 17.619 ,despite it should be a matrix.Also Md is a matrix(1000*1000) but all elements in it has the same value.Can anybody help,please?
clear all;
clc
load lab2_data;
x = radar_noise; % input signal
K = 1000; % K CAPITAL is Block Size
L = length(x) - mod(length(x),K); % only full blocks
zkd = reshape(x(1:L), K, []);
Md=zeros(L,L); % M ZEROS covariance matrix L*L
for i=1:size(zkd,1); % LOOP covariance matrix calculation
Mz=zkd(i,:)*zkd(i,:)';
Md=Md+Mz;
end
Md=Md/K;
0 Comments
Answers (1)
Sean de Wolski
on 14 Dec 2011
You duplicate question was answered here:
Walter's:Answer and in another thread that I answered but appears to have been deleted.
5 Comments
Walter Roberson
on 14 Dec 2011
Your block size is larger than the number of blocks you have, so LL=length(zkd) is going to return the block size (K) rather than the number of blocks (L) . You then initialize Md to be LL by LL, which is going to be K by K. Your zkd(i,:)*zkd(i,:)' is going to result in L by L, and an L by L matrix is too small to add to a K by K matrix.
Drop the LL=length(zkd); line, and use Md=zeros(L,L)
Remember, length() does not give you the size of the second dimension of an array, it gives you the size of the _largest_ dimension of the array no matter which position it occurs in.
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!