Hello, how can I do a (for loop) for this equation to find more than one value of the CF ? Specifically, I mean more than one value for (xm)
1 回表示 (過去 30 日間)
古いコメントを表示
function [CF]= Coherence_Factor(xm,N);
CF = ((abs (sum(xm))).^2) / (N* sum(abs(xm.^2)))
end
%Function call window
xm= [-1:4],N=length(xm);
xm=[-5:-2],N=length(xm);
xm=[-2:1],N=length(xm)
[CF]= Coherence_Factor(xm,N)
0 件のコメント
回答 (2 件)
VBBV
2022 年 12 月 31 日
xm= {[-1:4], [-5:-2],[-2:1]};
for k = 1:numel(xm)
N=length(xm(k));
CF(k)= Coherence_Factor(xm(k),N);
end
CF
function [CF]= Coherence_Factor(xm,N);
CF = ((abs (sum(cell2mat(xm)))).^2) ./ (N* sum(abs(cell2mat(xm).^2)));
end
0 件のコメント
Voss
2023 年 1 月 1 日
xm = {-1:4, -5:-2, -2:1};
Nx = numel(xm);
CF = zeros(1,Nx);
for k = 1:Nx
N = numel(xm{k});
CF(k) = Coherence_Factor(xm{k},N);
end
CF
function CF = Coherence_Factor(xm,N)
CF = abs(sum(xm)).^2 / (N*sum(abs(xm.^2)));
end
Note that if the xm are always guaranteed to be real-valued (as opposed to complex-valued), then the abs() calls are unnecessary:
xm = {-1:4, -5:-2, -2:1};
Nx = numel(xm);
CF = zeros(1,Nx);
for k = 1:Nx
N = numel(xm{k});
CF(k) = Coherence_Factor(xm{k},N);
end
CF
function CF = Coherence_Factor(xm,N)
CF = sum(xm).^2 / (N*sum(xm.^2));
end
And if N is always supposed to be the number of elements in xm, you can define N inside the function Coherence_Factor and avoid having the second input argument:
xm = {-1:4, -5:-2, -2:1};
Nx = numel(xm);
CF = zeros(1,Nx);
for k = 1:Nx
CF(k) = Coherence_Factor(xm{k});
end
CF
function CF = Coherence_Factor(xm)
N = numel(xm);
CF = sum(xm)^2 / (N*sum(xm.^2));
end
1 件のコメント
Walter Roberson
2023 年 1 月 1 日
I wonder if it is supposed to be sum(abs(xm).^2) or abs(sum(xm.^2)) ?
The current sum(xm) having priority has different results if values could be a mix of negative and positive
参考
カテゴリ
Help Center および File Exchange で Fourier Analysis and Filtering についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!