matlab使用

一、常用的快捷键

1.ctrl+R 多行注释          2.ctrl+T取消多行注释         

3.ctrl+] 多行缩进        4.ctrl+[ 多行前移               5.ctrl+I自动对齐       

6.ctrl+z撤回        7.ctrl+Y取消撤回

二、matlab中一些常用的操作

一、MATLAB之基础入门代码 - 王若虚 - 博客园icon-default.png?t=O83Ahttps://www.cnblogs.com/wangruoxu/p/15285614.html

三、数据输出及打印

1.文件输出

% 假设 data1 和 data2 是已经计算好的两组数据
data1 = rand(5, 3); % 随机生成的数据,仅作示例
data2 = rand(5, 3); % 随机生成的数据,仅作示例

% 打开第一个文件用于写入
fid1 = fopen('file1.txt', 'w');
% 打开第二个文件用于写入
fid2 = fopen('file2.txt', 'w');

% 将第一组数据写入第一个文件
for i = 1:size(data1, 1)
    fprintf(fid1, '%f\t%f\t%f\n', data1(i, :));
end

% 将第二组数据写入第二个文件
for i = 1:size(data2, 1)
    fprintf(fid2, '%f\t%f\t%f\n', data2(i, :));
end

% 关闭两个文件
fclose(fid1);
fclose(fid2);

例如

fprintf(fid1, '%f, %f, %f, %f, 0, 1, 1, 0\n', Uslip1, Uslip2, ep1, ep2);
%若Uslip1=0.1, Uslip=0.2, ep1=0.3, ep2=0.4
%输出结果为:
0.1, 0.2, 0.3, 0.4, 0, 1, 1, 0

2.屏幕输出打印

作用:可用于代码调试,找出错误所在位置;可显示当前计算的进程。

(1)sprintf输出显示

%第一种采用sprintf在命令行窗口显示
x_temp = x0;
sprintf('x_temp,%f,%f\n',x_temp ,x0)

%输出形式
ans =

x_temp,0.100000,0.100000

(2)元胞数组输出(句尾不要加分号,可以直接输出)

%注意句尾不要加分号,可以直接输出
param={f,esc1,asf1,esf1,esc2,asf2,esf2,ec}

%输出形式
param = 

[0.346673837927869]    [-0.027691114274857]    [0]    []    [0.084630119520134]    
[0]    [-0.029600909103352]    [0.943060994754723]

四、matlab中函数定义

1.函数定义的方式

(1)函数文件: 每个MATLAB函数都存储在一个单独的文件中,文件名必须与函数名相同,扩展名为.m

(2)函数头: 函数文件的第一行是函数头,定义了函数名、输入参数和输出参数。

(3)函数体: 函数头之后是函数体,包含实现函数功能的MATLAB代码。

(4)局部变量: 函数内部定义的变量是局部变量,仅在函数内部可见。

(5)返回值: 函数通过输出参数返回值。

示例,定义一个计算距离的distance.m文件

function d = distance(x1, y1, x2, y2)
    % 计算两点 (x1, y1) 和 (x2, y2) 之间的欧氏距离
    d = sqrt((x2 - x1)^2 + (y2 - y1)^2);
end

2.函数调用

(1)直接调用

这是最基本的函数调用方式,直接通过函数名和参数列表来调用函数。

d = distance(1,2,3,4);
(2)函数句柄调用
f = @distance;
result = f(1,2,3,4);
(3)匿名函数调用

创建一个没有名称的函数,并直接调用。

f = @(x, y) x + y;
result = f(5, 3);

3.matlab中自定义函数如何调用主程序中的较多参数

(1)全局变量

原文链接:https://blog.youkuaiyun.com/wuwuku123/article/details/106712238

  用matlab写代码时,如果有多个.m文件,且之间存在相互调用关系;每个.m文件中的变量,都为局部变量,都有自己的工作区域/Workspace,当函数调用结束之后,其变量的声明周期也就结束了(记住,变量的声明周期随着子函数的结束而结束);

如果定义了全局变量global,则需要注意几点:

1、在每一个子函数/.m文件中,都需要先声明,然后再进行操作;

2、global/全局变量,只占一个workspace,即在某一个地方修改,同时在变量存在的地方全部修改;

3、定义多个global/全局变量方式为: global var1 var2 var3 ……;

4、去掉/消除某一个或多个全局变量方式为:clear var1 var2 var3……;

优缺点:
(1) 优点
传递大数据的参数:
      如果通过函数传参数的方式的话,系统会浪费过多的时间在复制数据的时间上,如果采用global的方式共享数据的话代码的效率会大大提高

过多的常量需要传递
       如果每个量都作为函数函数的参数传递的话,代码参数列表就很长,如果采用global的话代码的可读性提高,函数调用也方便。

(2) 缺点
      在多数情况下,使用全局变量不是值得推荐的做法,因为会导致模块之间存在强耦合,并且由于各模块的访问顺序问题,可能导致一些难以预料的情况。                        

自用体会:当参数较多时,函数调用较为复杂时,还是用全局变量会更方便。

(2)使用参数列表

直接在函数调用时传递所有需要的参数。例如,如果您的主程序中有多个参数 param1, param2, ..., paramN,您可以这样定义和调用函数:

% 主程序中定义参数
param1 = value1;
param2 = value2;
% ... 更多参数

% 自定义函数定义
function result = myFunction(param1, param2, ...)
    % 函数体
end

% 自定义函数调用
result = myFunction(param1, param2, ...);

这种方法适用于参数数量较少且固定的情况。

(3) 使用元胞数组或结构体

如果参数数量很多或者不确定,可以使用元胞数组(cell array)或结构体(struct)来组织这些参数:

% 使用元胞数组
params = {param1, param2, ..., paramN};

% 自定义函数定义
function result = myFunction(params)
    param1 = params{1};
    param2 = params{2};
    % ... 更多参数
    % 函数体
end

% 使用结构体
params = struct('param1', value1, 'param2', value2, ...);

% 自定义函数定义
function result = myFunction(params)
    param1 = params.param1;
    param2 = params.param2;
    % ... 更多参数
    % 函数体
end

这种方法使得函数调用更加灵活,尤其是当参数数量变化或者部分参数可选时。

(4)使用 varargin

在函数定义中使用 varargin 来接受任意数量的输入参数:

% 自定义函数定义
function result = myFunction(varargin)
    param1 = varargin{1};
    param2 = varargin{2};
    % ... 更多参数
    % 函数体
end

% 自定义函数调用
result = myFunction(param1, param2, ...);

这种方法允许函数接受任意数量的输入参数,使得函数更加通用和灵活。

注:参数列表与varargin的区别

主要区别在于调用时所输入的参数的量

%1.使用参数列表定义
function result = myFunction(param1, param2, param3)
    % 函数体
end

% 只可以调用函数并传递三个参数,不可以传递五个参数
avg1 = calculateAverage(10, 20, 30);
disp(['平均值1: ', num2str(avg1)]);

%2.使用varargin定义
function average = calculateAverage(varargin)
   % 函数体
end

% 可以调用函数并传递三个参数
avg1 = calculateAverage(10, 20, 30);
disp(['平均值1: ', num2str(avg1)]);

% 也可以调用函数并传递五个参数
avg2 = calculateAverage(1, 2, 3, 4, 5);
disp(['平均值2: ', num2str(avg2)]);

五、matlab使用过程的一些积累

1.在使用优化求解时,数字与加减之间要有空格,否则会报错。试了一下乘法有没有空格不受影响。

2.关于虚数和实数的问题

X = real(Z) 返回数组 Z 中每个元素的实部。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值