Soru sorBrace indexing is not supported for variables of this type hatasi
HBurgan tarafından 5 yıl önce soruldu

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?

2 Cevap
hakkans Yönetici tarafından 5 yıl önce cevaplandı

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.

Caglar Yönetici tarafından 4 yıl önce cevaplandı

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