Problem with applying a function (kstest) to cell arrays

4 vues (au cours des 30 derniers jours)
BN
BN le 29 Mai 2020
Dear all,
I want to have the result of kstest (Kolmogorov-Smirnov test) for all arrays in a cell. In fact, I have a 1x93 cell that contains 93 doubles and the third column of these doubles is the column that I want to calculate kstest for. I searched and write this script:
for i=1:length(C1)
[h, p, k2stat] = arrayfun(@kstest, C1{1,i}(:, end), 'UniformOutput', false);
end
Although it runs successfully and the output is h with 336x1; I believe it gives me the wrong answer cause when I manually check some cell arrays it gives me the different answer (in some cases the output of my script reject null hypothesis while when I manually check it using this code:
kstest(C1{1,27}(:,end))
it's accepts the null hypothesis. So please let me what is my mistake if you know. I attached a small sample.
Thank you in advance

Réponse acceptée

Cris LaPierre
Cris LaPierre le 29 Mai 2020
The issue I see is you are using arrayfun, which applies the function to each element in the vector as opposed to each cell.
My recommendation is to use cellfun instead.
[h, p, k2stat] = cellfun(@(c)kstest(c(:,end)), C1);
On the other hand, you could also do this manually using a for loop.
for i=1:length(C1)
[h(i), p, k2stat] = kstest(C1{i}(:, end));
end

Plus de réponses (1)

Image Analyst
Image Analyst le 29 Mai 2020
Is this what you're looking for?
s = load('C.mat')
C1 = s.C
numCells = length(C1)
for k = 1 : length(C1)
thisArray = C1{k}; % Extract 2-D matrix.
thisArray = thisArray(:, 3); % Extract only column 3.
% Do kstest on column 3 only:
k2stats(k) = kstest(thisArray);
% [h, p, k2stat] = arrayfun(@kstest, C1{1,i}(:, end), 'UniformOutput', false);
% Visualize it
subplot(4, 2, k);
plot(thisArray, 'b.-');
grid on;
caption = sprintf('Array #%d', k);
title(caption, 'FontSize', 18);
end
subplot(4, 2, 8);
bar(k2stats)
title('k2stats', 'FontSize', 18);
k2stats % Show in command window
See the link on Loren Shure's blog for a discussion:

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Produits


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by