早教吧作业答案频道 -->其他-->
MATLAB为什么无法调用这个M文件呢?任意排列问题.MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列.编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量
题目详情
MATLAB 为什么无法调用这个M文件呢?
任意排列问题.MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列.编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列.
function Y=rndprm1(X)
[m,n]=size(X);
if m>1
error('RNDPRM1 accepts as inputs only vectors');
end
Y=[];
l=n;
for i=1:n
k=1+fix(l*rand);
x=X(k);
Y=[Y,x];
X(k)=[];
l=l-1 ;
end
结果就是下面这几种情况
>> Y=rndprm1(5)
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
>> rndprm1(6)
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
>> X=7
X =
7
Input argument "X" is undefined.
Error in ==> rndprm1 at 2
[m,n]=size(X);
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
有发现个问题.重新编写一次后
function Y=rndprm1(X)
%RNDPRM1 用for循环产生一个行向量的任意排列
%RNDPRM1(X)产生行向量X的任意排列
[m,n]=size(X);
if m>1
error('RNDPRM1 accepts as inputs only vectors');
end
Y=[]; %从一个空矩阵开始
l=n; %X的元素个数
for i=1:n
k=1+fix(l*rand); %随机选择Y的下一个元素的位置
x=X(k); %被选择的元素
Y=[Y,x]; %将X添加到Y中
X(k)=[]; %从X中删除x元素
l=l-1 ; %更新X的元素个数
end
这次保存在MATLAB/work文件夹内
>> Y=rndprm1(6)
Y =
6
>> Y=rndprm1(16)
Y =
16
>> rndprm1(16)
ans =
16
>>
万分纠结,好吧,我真的是新学,
任意排列问题.MATLAB提供的函数randperm(n),可以产生一个从整数1到整数n的任意排列.编写一个函数来实现randperm(n)函数的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列.
function Y=rndprm1(X)
[m,n]=size(X);
if m>1
error('RNDPRM1 accepts as inputs only vectors');
end
Y=[];
l=n;
for i=1:n
k=1+fix(l*rand);
x=X(k);
Y=[Y,x];
X(k)=[];
l=l-1 ;
end
结果就是下面这几种情况
>> Y=rndprm1(5)
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
>> rndprm1(6)
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
>> X=7
X =
7
Input argument "X" is undefined.
Error in ==> rndprm1 at 2
[m,n]=size(X);
Error:File:rndprm1.m Line:1 Column:20
Unexpected MATLAB expression.
有发现个问题.重新编写一次后
function Y=rndprm1(X)
%RNDPRM1 用for循环产生一个行向量的任意排列
%RNDPRM1(X)产生行向量X的任意排列
[m,n]=size(X);
if m>1
error('RNDPRM1 accepts as inputs only vectors');
end
Y=[]; %从一个空矩阵开始
l=n; %X的元素个数
for i=1:n
k=1+fix(l*rand); %随机选择Y的下一个元素的位置
x=X(k); %被选择的元素
Y=[Y,x]; %将X添加到Y中
X(k)=[]; %从X中删除x元素
l=l-1 ; %更新X的元素个数
end
这次保存在MATLAB/work文件夹内
>> Y=rndprm1(6)
Y =
6
>> Y=rndprm1(16)
Y =
16
>> rndprm1(16)
ans =
16
>>
万分纠结,好吧,我真的是新学,
▼优质解答
答案和解析
看不懂你写的意思,
function p = randperm(n)
[ignore,p] = sort(rand(1,n));
这是那个函数实现的语句,就是先生成一个一维数组,数组长度为n,大小为0与1之间的任意数,然后排序,randperm输出排序的下标,所以就是任意的排序的1到n的数字.
function p = randperm(n)
[ignore,p] = sort(rand(1,n));
这是那个函数实现的语句,就是先生成一个一维数组,数组长度为n,大小为0与1之间的任意数,然后排序,randperm输出排序的下标,所以就是任意的排序的1到n的数字.
看了MATLAB为什么无法调用这个...的网友还看了以下:
7.将一个四位数的数字顺序颠倒过来,得到一个新的四位数,(这个数也叫原数的反序数),新数比原数大8 2020-07-05 …
定义点P(x0,y0)到直线l:Ax+By+C=0(A2+B2≠0)的有向距离为d=Ax0+By0 2020-07-09 …
四个数一循环的数列问题数列:2,-3,-1/2,1/3……四个一循环,求数列公式?其实这道题是流程 2020-07-21 …
帮我约分和解决函数题目谢谢.数学来的如题,数学约分cos^2A=16/25这已经是不是最简?最后怎 2020-07-30 …
下列命题错误的是()A.实数与数轴上的点一一对应B.数轴上的点表示的数若不是有理数就一定是无理数C 2020-07-31 …
3.输出所有水仙花数到数组a,输出数组a。(说明:若一个3位数的各3.输出所有水仙花数到数组a,输 2020-07-31 …
高数题:设函数f(x)的定义域为(-l,l),证明必存在(-l,l)上的偶函数g(x)及奇函数h( 2020-08-01 …
角量子数l=2的某一电子,其磁量子数m()A.只能为+2B.只能为-1、0、+1三者中的某一个数值C 2020-11-06 …
第一题,计算与八进制数64位等值数的二进制数,第二题,计算与十进制数10000等第一题,计算与八进制 2020-11-24 …
已知直线l过点M(0,1),倾斜角为α,与抛物线y²=x交于A,B两点,若α=3/4π,写出直已知直 2021-01-22 …