how to save calculating result ( form two variable) in 2-D matrix ?

1 次查看(过去 30 天)
let's me explaining my question :
for example in 1-D
using for loop:
z=[ ];
for Eg=.5:.05:1.3;
a = quad(@(x) (x.^2)./(exp(x/0.516)-1) , Eg , 100 );
z = [z a]
end
then i use "arrayfun" saving result in 1-D matrix
z=[ ];
Eg=0.5:0.05:1.3;
a = arrayfun(@(x1)quad(@(x)x.^2./(exp(x/0.516)-1),x1,100),Eg)
Now i want to this process with 2 variables change to 2-d matrix that Eg is on row and Ei is on column.
(here is my code)
z=[ ];
for Eg=.5:.05:1.3;
for Ei=0:0.05:Eg-0.05
aa= quad( @(E)(E.^2) ./ (exp(E./0.5172)-1), Ei , Eg);
z = [z a]
end
end
thanks :)

采纳的回答

Sargondjani
Sargondjani 2012-5-8
the problem is that the length of Ei will differ for the values of Eg. To solve this with for loop i preallocate 'aa' with NaN everywhere
%with for loop
Eg=.5:.05:1.3;
aa=zeros(17,26)+NaN;
for ig=1:length(Eg);
Ei=0:0.05:Eg(ig)-0.05;
for ii=1:length(Ei);
aa(ig,ii)= quad( @(E)(E.^2) ./ (exp(E./0.5172)-1), Ei(ii) , Eg(ig));
end
end
clear ig ii
without the for loop: i create a 'meshgrid' and then i cut of every value for Ei: if EI>=EG then i set EI=EG-0.05
%without for loop
Eg=.5:.05:1.3;
Ei=0:0.05:Eg(end)-0.05;
[EI,EG]=meshgrid(Ei,Eg);
EI(EI>=EG)=EG(EI>=EG)-0.05;
bb = arrayfun(@(E1,E2)quad(@(x)x.^2./(exp(x/0.5172)-1),E1,E2),EI,EG);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by