Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

HOW CAN YOU RUN THIS MATLAB CODES INTO R-PROGRAMMING CODES: ? Subroutine: functi

ID: 2984700 • Letter: H

Question

HOW CAN YOU RUN THIS MATLAB CODES INTO R-PROGRAMMING CODES: ?

Subroutine:
function[y,concen]=fungi(n,t)
% n- number of fungi
% t- number of steps
% y- max distance in each step
% concen- density of points at given distance
m1(1,1:n)=1:n;
m2(1,1:n)=(1:n)*0;
y(1)=0;
for i=1:t

alfa=rand(1,n)*pi;

d=randn(1,n);
m1(i+1,1:n)=m1(i,1:n)+(d.*cos(alfa));
m2(i+1,1:n)=m2(i,1:n)+(d.*sin(alfa));
if any(m2(i+1,:)<0)
xx=find(m2(i+1,:)<0);
for j=1:length(xx)
m2(i+1,xx(j))=-m2(i+1,xx(j));
end;
end;
y(i+1)=max(max(m2(i+1,;)),y(i));
end;
maxy=y(t+1);
deltay=maxy/(2*t);
pop=n;
pointotal=sum(sum(m2(1:t+1,:)<=(maxy)));
%pointotal-all points
ilosc(1)=n/pointotal;
for i=1:2*t
total=sum(sum(m2(1:t+1,:)<=((i/(2*t))*maxy)));
concern(i+1)=total-pop;
concern(i+1)=concern(i+1)/pointotal;
pop=total;
end;
subplot(2,1,1);
plot([1,n],[0,0],'k','LineWidth',2);
% hold on;
for i=1:length(m1(1,:))
plot(m1(:,1),m2(:,i),'-*','Color',[rand(1),rand(1),rand(1)]);
% hold on;
end;
xlabel('X');
ylabel('Y');
subplot(2,1,2);
plot([0:deltay:maxy],concern);
xlabel('distance');
ylabel('density');
% hold off;
pause(0.01);


Driver Statements;


function y=calcul(n,t)
for j=1:t
for i=:100
[yy,i1]=fungi(n,j);
point(i)=yy(j+1);
end;
y(j)=sum(point)/100;
end;

Explanation / Answer

Yes. On Windows, I have done a lot of this via the Matlab R-link and then R(D)COM server on the R side.

It works beautifully for passing commands and data back and forth. Calling R via the OS is feasible, but then you have to deparse (write) and parse (load) data passed between them. This is tedious and no fun. Especially if you are much data around. It also means that you lose state on the R side and every invocation is just like the first time.


You can use R in batch mode. If R is in your path, then you can call from MATLAB:


system('R CMD BATCH infile outfile');