目录
练习例题
题目要求
代码呈现
运行结果
基础操作
返回矩阵的行数列数
生成矩阵函数
取整取余函数
自定义函数参数缺省下的默认值以及输入参数为空集下替换为默认值的情况
find函数大观
对于find函数的改善调用
练习例题
题目要求
编写matlab自定义函数,要求可以返回一个矩阵中的0元素的个数以及位置,要求先生成一个只有0和1的矩阵。
代码呈现
Generate_0or1_matrix.m(生成01随机矩阵)
function f = Generate_0or1_matrix(m , n)
if(n)
else
n = m;
end
A = rand(m , n);
for i = 1 : m
for j = 1 : n
A(i , j) = round(A(i , j));
end
end
f = A;
return_zero1_position.m(用循环得到的返回矩阵0元素的自定义函数)
function [num , post] = return_zero1_position(A)
row = size(A, 1); column = size(A, 2);
num = 0;position = zeros(row*column,2);
for i = 1: row
for j = 1 : column
if (A(i,j) == 0)
num = num + 1;
position(num , 1) = i;
position(num , 2) = j;
end
end
end
test1.m(主程序)(用return_zero1_position求解题目)
%test return_zeros_position
clc;clear;
row = input('row = ');
column = input('column = ');
rank = Generate_0or1_matrix(row , column);
[num , post] = return_zero1_position(rank);
fprintf('num = %d\nposition =\n',num);
disp(post);
return_zero2_position.m(用find函数求解的自定义函数)
function [num , post] = return_zero2_position(A)
m = size(A , 1);
pass = find(A == 0);
num = length(pass);
position = zeros(num , 2);
for i = 1 : num
position(i , 2) = floor(pass(i)/m + logical(mod(pass(i),m)));
position(i , 1) = mod(pass(i) , m) + (1 - logical(mod(pass(i) , m)))*m;
end
post = position;
test2.m(用return_zero2_position求解的主函数)
%test return_zeros_position
clc;clear;
row = input('row = ');
column = input('column = ');
rank = Generate_0or1_matrix(row , column);
[num , post] = return_zero2_position(rank);
fprintf('num = %d\nposition =\n',num);
disp(post);
运行结果
row = 4
column = 3
num = 4
position =
3 1
2 2
3 2
3 3
rank =
rank =
1 1 1
1 0 1
0 0 0
1 1 1
基础操作
返回矩阵的行数列数
行数:row = size(rank , 1);
列数:column = size(rank , 2);
数列长度:len = length(line);
生成矩阵函数
全0矩阵: rank = zeros(row);%行数等于列数相同
rank = zeros(row , column);%行数不等于列数
全1矩阵:rank = ones(row);%同上
随机矩阵:rank = rand(row);%同上,元素为均匀分布随机小数
rank = randn(row);%同上,正态分布
取整取余函数
%取整
floor(10.7) = 10;floor(-10.7) = -11;%取向负无穷;
ceil(10.3) = 11;ceil(-10.3) = -10;%取向正无穷;
round(10.7) = 11;round(10.4) = 10;%四舍五入;
%取余
mod(10 , 4) = 2; mod(10 , -4) = -2; mod(-10 , 4) = 2;
rem(10 , 4) = 2; rem(10 , -4) = 2; rem(-10 , 4) = -2;
自定义函数参数缺省下的默认值以及输入参数为空集下替换为默认值的情况
%参数缺省(需要n个参数,只输入了m个参数的值,缺省值为默认值)
函数定义:
function f = function1(param1,param2,param3,param4)
if (nargin<4)
param4 = default;
end
主函数调用:
f = function1(a , b , c);
%输入参数为空值(替换为默认值)
函数定义:
function f = function1(param1,param2,param3,param4)
if(param4)
if(param4 ~= 0)
param4 = default;
end
end
主函数调用:
d = [];%d = input时,没有输入d的取值,直接回车键
f = function1(a , b , c , d);
find函数大观
%find函数
返回位置:
find(rank);%返回rank中非0元素的位置
find(rank<2);%返回满足条件的元素的位置
find(rank<2,5);%返回满足条件的前5个元素的位置;
find(rank,5);%返回rank前5个非0元素的位置;
[a , b] = find(rank);%返回的是行列参数;
c = find(rank);%返回序数,从左到右,从上到下,一列一列来数;
返回取值:
[a,b,v] = find(rank)%返回非0的行列和取值;
对于find函数的改善调用
>> rank
rank =
0 0 0 0
0 1 1 0
1 1 0 1
1 1 1 1
1 1 0 0
1 1 0 1
%代码段
row = size(rank , 1);
pass = find(rank == 0);
for i = 1 : length(pass)
position(i , 2) = floor(pass(i)/row + logical(mod(pass(i),row)));
position(i , 1) = mod(pass(i) , row) + (1 - logical(mod(pass(i) , row)))*row;
end
disp(position);
%运行结果
1 1
2 1
1 2
1 3
3 3
5 3
6 3
1 4
2 4
5 4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)