早教吧作业答案频道 -->其他-->
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为什么无法调用这个...的网友还看了以下:
如果n是一个整数,我们把n的约数的个数用一个符号A[n]表示,n的约数的和用一个符号B[n]表示1 2020-05-13 …
函数f定义在正整数集上f(1)=1,f(3)=3,且对每个正整数n都有f(2n)=f(n),f(4 2020-05-16 …
已知n为大于100的自然数,若(n的3次方)+100能被n+10整除,则满足条件的n的个数为多少个 2020-05-16 …
某校为了适应电化教学的需要新建阶梯教室,教师的第一排有a个座位,后面每一排都比前一排多一个座位,若 2020-05-16 …
C语言编程:输入两个正整数m和n,求它们的最大公约数.提示:采用辗转取余算法.m除以n的余数为零, 2020-05-17 …
n方为质数P的倍数 n为P的倍数?n方为质数P的倍数 n为P的倍数 N为整数我的理解是 n*n=p 2020-05-17 …
某阶梯教师第一排友25个座位,后面每一排比前一排多2个座位,若第N排又M个座位,教室共有P个座位, 2020-05-21 …
一个与排列组合有关的概率问题开始时令点M位于一维坐标系的0点,每一步向左或向右移动1,向左或向右的 2020-06-06 …
数学&规律+sos某校为适应电化教学的需求,新建阶梯教室,教师的第一排有a个座位,后面每一排都比前 2020-06-07 …
如图,在平面直角坐标系xOy中,将二次函数y=x2-1的图象M沿x轴翻折,把所得到的图象向右平移2 2020-06-14 …