for h = 1:length(data)
for j = 1:365
clear k ID id
k = [1:5]; % k(1)=k_GEV, k(2)=k_LL, k(3)=k_LN, k(4)=k_WB, k(5)=k_GP
% Find eventual zero values in the data, if there are zeros:
% separate the data into nonzero values and zeros. The probability
% distributions are fitted to nonzero data while the probability of
% zeros is calculated separately.
ZEROS = [];
ZEROS = find(~data{A,h}(:,j));
Z = isempty(ZEROS);
if Z == 1 % ZEROS is empty, there are no zeros in the data
data = data{A,h}(:,j);
prob_zero = 0;
elseif Z == 0 % ZEROS is not empty, there are zeros in the data
rows = find(data{A,h}(:,j)); % Find rows with nonzero values
data = data{A,h}(rows,j);
zeros = data{A,h}(ZEROS,j);
prob_zero = length(zeros)/(length(data{A,h}(:,j))+1);
end
Yukarıdaki kodda ZEROS = find(~data{A,h}(:,j)); satırında "Brace indexing is not supported for variables of this type" şeklinde hata veriyor. Nasıl düzeltebilirim?
Kodda data değişkeninin tanımlamasını göremiyorum. data değişkeni nedir? Ayrıca {} ve () işaretlerinin ard arda konduğu bir kullanım şekli bilmiyorum. Buradaki hatanın sebebi data her ne ise {} işaretleri kullanarak elemanlarına işaret edemeyecek olmanız. {} işaretleri ile indisleme "cell" türü vektör/matrislerde geçerli diye biliyorum.
x{}() şeklinde çeşitli kullanımlar var. aklıma gelenler şunlar:
hakkans'ın yazdığı gibi, cell array elemanlarına erişmek için kullanılabilir:
>> cellarray{1}=[1 3];
>> cellarray{1}(2)
ans =
3
string array üzerinde, char türü gibi işlem yapmak icin kullanilabilir:
>> kelimeler=["bir","iki"];
>> kelimeler{2}
ans =
'iki'
>> kelimeler{2}(1)
ans =
'i'
tablo içindeki değerleri, içerikle aynı türde çağırmak için kullanılabilir:
>> a=[1; 2; 3;]; b=["x"; "y"; "z"]; tablo=table(a,b)
tablo =
3×2 table
a b
_ ___
1 "x"
2 "y"
3 "z"
>> tablo(:,1)
ans =
3×1 table
a
_
1
2
3
>> tablo{:,1}
ans =
1
2
3
>> tablo{:,1}(2)
ans =
2