Fonksiyon MATLAB göster?
MATLAB Göster bir işlevi yok bu beni biraz şaşırttı, ben sensiz yaşayamam bir şey olduğu için bir araya kendim girdim. Orada daha iyi bir sürümü var mı? Atladığım orada MATLAB için biraz standart fonksiyonel programlama kütüphanesi var mı?
function results = map(f,list)
% why doesn't MATLAB have a Map function?
results = zeros(1,length(list));
for k = 1:length(list)
results(1,k) = f(list(k));
end
end
kullanım örn
map( @(x)x^2,1:10)
CEVAP
Kısa cevap: yerleşik işlev ARRAYFUN mu tam olarak negösterişlev, sayısal bir dizi için yapar:
>> y = arrayfun(@(x) x^2,1:10)
y =
1 4 9 16 25 36 49 64 81 100
Yerleşik benzer şekilde davranan diğer iki fonksiyonları vardır: CELLFUN hücre dizilerinin elemanları üzerinde faaliyet gösteren ve STRUCTFUN bir yapının her alanında faaliyet göstermektedir.
Ancak, bu işlevler, eğer vektörleştirme yararlanmak çoğu zaman gerekli, özellikle element-wise kullanarak arithmetic operators değildir. Verdiğin örneğin, vectorized çözümdür:
>> x = 1:10;
>> y = x.^2
y =
1 4 9 16 25 36 49 64 81 100
Bazı işlemleri otomatik olarak çalışır birimleri arasında (ekleme gibi bir skaler değer bir vektör) Diğerleri operatörleri özel bir sözdizimi için element-bilge işlem (ifade ile bir "." önce operatör). MATLAB birçok fonksiyonları vektör ve matris değişkenleri element-bilge işlemleri kullanarak çalıştırmak için tasarlanmış ve böylece harita fonksiyonları gerekmez.
Özetlemek gerekirse, burada her öğe, bir dizi kare için birkaç farklı yolu vardır:
x = 1:10; %// Sample array
f = @(x) x.^2; %// Anonymous function that squares each element of its input
%// Option #1:
y = x.^2; %// Use the element-wise power operator
%// Option #2:
y = f(x); %// Pass a vector to f
%// Option #3:
y = arrayfun(f,x); %// Pass each element to f separately
Böyle basit bir işlem için elbette seçeneği #1 en mantıklı seçim.
Neden't Python işareti bir fonksi...
Hızlanan MATLAB kod düzenleyiciyi kull...
nasıl bir python değişken bir fonksiyo...
JavaScript fonksiyon bildirimi ve değe...
JAXB: < suya marshall göster nasıl y...