Labview and Matlab for PT

Just a place to discuss with Matlab and Labview

ad

Exam3.1答案

第一題:
個人認為減少迴圈加快執行的方式為
n=(1:50).^2;
reshape(n,5,10)
這樣可以得到相同的答案

第二題
A=magic(5);
for n=1:5
for m=1:5
if A(n,m)>10
A(n,m)=NaN;
end
end
end
即利用迴圈一一的去檢查是否符合條件,符合的就替換成NaN

第三題
A=magic(5);
for n=1:5
for m=1:5
if isprime(A(n,m))
A(n,m)=0;
end
end
end
和第二題一樣,以迴圈的方式去檢測

第四題
將no_of_draw改成[100:100:1000]會發現到結果和no_of_draw的答案差不多,也就是只會執行100次,我們可以利用
a=100;b=(100:100:1000);
c=(a==b)
c=[1 0 0 0 0 0 0 0 0 0]
我想應該是這樣,所以程式裡面的條件
while n<=no_of_draw
因為第一個元素不符條件了,所以程式結束。
如果要一次全部呈現可以改成如下程式
function [B]=draw_number(no_of_draw)
% draw ball numbers within ndraw times
%
for i=1:length(no_of_draw)
C_i=zeros(1,5);
n=1;
while n<=no_of_draw(1,i)
ball=fix(rand*10);
if ball<2
C_i(1)=C_i(1)+1;
elseif ball<4,
C_i(2)=C_i(2)+1;
elseif ball<6,
C_i(3)=C_i(3)+1;
elseif ball<8,
C_i(4)=C_i(4)+1;
else
C_i(5)=C_i(5)+1;
end
n=n+1;
end
B(i,1:5)=C_i;
end
第五題
clear all
k=input('Please input a number to compare? (0-100)');
l=input('Please input the total number to do?');
a=round(k);
n=0;
num=0;
answer=0;
if a>=0 & a<=100
for i=1:l
while round(rand*100)~=a
n=n+1;
end
num=num+1/n;
end
answer=num/100;
fprintf('%d%s%d%s%f\n',l,'次抽中和',a,'相同的號碼機率為千分之',answer*1000);
else
fprintf('%s\n','你所輸入的號碼範圍號碼不對')
end
可以同時輸入號碼跟比對次數

0 意見: