Birkaç dizede yinelenecek, ancak Matlab'da yapılamayan bir döngü oluşturmak istiyorum.Matlabdaki dizeleri içeren foreach döngüsü
for i=1:3
if (i==1)
b='cow';
elseif (i==2)
b='dog';
else
b='cat';
end
disp(b);
end
ve sonucudur:
ne işleri olduğunu
cow
dog
cat
Ama ne istediğim gibi görünecektir daha şık bir şeydir:
for i=['cow','dog','cat']
disp (i);
end
ve vermek aynı sonuç.
Bunu yapmak için Matlab'da bir seçenek var mı?
ADDITION:
ben kullanmak ve sadece (disp
sadece bir örnek olarak oldu) daha sonra göstermeye üzerinde dizeleri olarak kelimeleri gerekir. değerleri hücreleri olarak kalmak ve şu hata mesajını alıyorum dizeleri olarak değil
clear all;
close all;
clc;
global fp_a
global TEST_TYPE
global SHADE_METHODE
for fp_a=11:24
for shade={'full','fast'}
SHADE_METHODE=shade(1);
for test={'bunny','city'}
TEST_MODE=test(1);
fprintf ('fp_a:%d | test: %s | shade: %s',fp_a,TEST_TYPE,SHADE_METHODE);
ray_tracing;
end
end
end
O çalışmıyor: benim gerçek programda hücre dizileri kullanmayı denedim
??? ==> fprintf kullanılırken hata 'hücre' girişleri için tanımlanmamış.
* -Gerçekten ben sadece değerler doğru olup olmadığını kontrol için kullanabilirsiniz fprintf
gerekmez.
**
-ray_tracing
dizeleri
Ekteki sorun yalnızca sözdizimi. Kıvrımlı parantezleri kullanmanız gerekir - "test {1}" - dizideki hücre dizisini çıkarmak için normal parantez değil - "test (1)" - dizideki ilk hücreyi seçer, burada hiçbir şey yapmaz. Oli'nın örnek kodunu tekrar kontrol edin; "i {1}" deki küme parantezlerini kullandığını unutmayın. (Ayrıca, bunu önlemek için globals kullanmayın. –
'SHADE_METHODE = shade {1};' yerine SHADE_METHODE = shade (1); ' – Oli
olası duplicate [MATLAB içinde foreach var mı? Eğer öyleyse, temeldeki veriler değişirse nasıl davranır?] (Http://stackoverflow.com/questions/408080/is-there-a-foreach-in-matlab-if-so-how-does-it-behave -if-the-under-data-c) –