matlab中 存在 未定义变量

这是在使用自定义函数时我遇到的问题

m = 10

function f = f1(x)
f = m + 1
end

如此类似的编写脚本文件,运行时却报错,f1函数中有未定义的变量m。

matlab中自定义函数必须要用函数文件吗?我如此想着但仍然报错,为了比赛也没充分学习matlab,这是我的基本语法错误了吗?

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7481630
  • 这篇博客也不错, 你可以看下matlab数组索引必须为正整数或逻辑值,错误解决办法
  • 除此之外, 这篇博客: Matlab 绘制竖线(直线),固定组合图中子图位置, Matlab绘制小间距组合图方法,设置图片不显示直接保存中的 三、 Matlab绘制小间距组合图方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 假设绘制2*2组合图,使用tiledlayout()函数。
    Example

    rn = 2;  % The number of rows
    cn = 2;  % The number of columns
    figure;
    ha = tiledlayout(rn,cn,'TileSpacing','Compact','Padding','Compact');
    
    X=[0	5	10	15	20 25 30 35];
    Y=[11.6468	5.1099	3.326	2.3581	2.1535	1.9456	1.916	1.931;
    11.364	5.0842	3.5273	2.5558	1.9321	1.8705	1.8567	1.8674;
    12.1578	4.8974	3.1736	2.4388	1.9552	2.0668	1.8699	1.6778;
    10.6016	5.0739	3.2126	2.3368	2.007	1.9236	1.8906	1.8702];
    
    nexttile
    plot(X,Y(1,:),'ko-','linewidth',linewidth1)
    nexttile
    plot(X,Y(2,:),'bo-','linewidth',linewidth1)
    nexttile
    plot(X,Y(3,:),'co-','linewidth',linewidth1)
    nexttile
    plot(X,Y(4,:),'ro-','linewidth',linewidth1)
    
    

    设置tiledlayout(?行数,?列数,'TileSpacing','Compact','Padding','Compact');后的间距实例

    在这里插入图片描述
    不做tiledlayout()设置时的间距示例:
    在这里插入图片描述

  • 您还可以看一下 硬核野生技术咨询客服小李老师的matlab零基础入门路径规划城市遍历机器人路径等问题课程中的 求微分方程组的通解特解数值解小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    如果在使用 matLab 自定义函数时报错提示未定义变量,可以尝试以下几种解决方案:

    1. 在函数前面加上 global 变量名,将变量声明为全局变量,这样就可以在函数内部使用该全局变量了。例如:
    global m
    
    1. 在函数内部使用 assignin 函数,将变量赋值到函数外部的工作区,从而避免未定义变量的问题。例如:
    assignin('base', 'm', m)
    
    1. 直接在函数内部定义变量并初始化,避免使用外部未定义的变量。例如:
    m = 1;
    
    1. 如果需要使用其他文件中的变量,可以使用 load 函数将文件中的变量加载到当前工作区中,然后再进行使用。例如:
    load('filename.mat', 'm');
    

    以上是一些常用的解决方案,根据具体情况选择适合的方法即可。