Code Results?
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;
Answers (1)
Sean de Wolski
on 14 Dec 2011
0 votes
You duplicate question was answered here:
Walter's:Answer and in another thread that I answered but appears to have been deleted.
5 Comments
zayed
on 14 Dec 2011
Sean de Wolski
on 14 Dec 2011
But you haven't changed anything!!!!!!!!
You're still multiplying a row vector by a column vector which will _always_ result in a scalar.
zayed
on 14 Dec 2011
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.
zayed
on 15 Dec 2011
Categories
Find more on Multidimensional Arrays 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!