光度立体涉及到多光源及其对应的多幅图像,在用matlab进行编程时,遇到批量定义变量和自定义函数的批量传入参数的问题。现总结如下,欢迎大家批评指正。

  • 传统定义和传输方式
clc
clear all
close allvar1 = randn(3,3);
var2 = randn(3,3);
var3 = randn(3,3);
var4 = randn(3,3);
var5 = randn(3,3);
var6 = randn(3,3);
var7 = randn(3,3);res = Add(var1,var2,var3,var4,var5,var6,var7)function res = Add(p1,p2,p3,p4,p5,p6,p7)res = p1+p2+p3+p4+p5+p6+p7;
end

如果需要定义更多的变量,则这种方式是繁琐费时费力,容易出错,debug起来也是令人烦躁郁闷。上述程序,主要有四个值得注意和改进的部分:

所谓量变引起质变,对于一两个变量的不太复杂的函数程序,上述每一个环节平常都不是格外留意的对象,一旦变量批量化(>10个),原本习以为常司空见惯的也变为问题而棘手的了。针对上述四个问题,下面给出相应的改进方案:

  • 批量定义和传输方式
clc
clear all
close allnums = 20;  % 变量个数
height = 100; % 矩阵尺寸
width = 60;
VarCell = {}; % 存储变量
for i = 1:numseval(['Var',num2str(i),'=','i']);  % 批量定义变量,并赋初值VarCell{i} = eval(['Var',num2str(i)]); % 将变量实值保存到cell中
endres = CalcCell(VarCell);  % varcell包含所有实参变量值,只需传入varcell即可
disp(['sum(1:' num2str(nums) ')=' num2str(res)]);function res = CalcCell(varargin)  % 利用varargin传入可变数量的参数res = 0;for i = 1:nargin  % 得到输入参数的个数lens = length(varargin{i});for j = 1:lensres = res + varargin{i}{j}; % 得到varcell中每个变量值endend
end


上述自定义CalcCell函数中,仅对变量进行简单的求和运算,如果涉及较复杂的操作运算,不可避免会出现其他意想不到的问题,请大家多多交流讨论,批评指正!

matlab 批量定义变量及批量传入函数参数相关推荐

  1. matlab中如何定义整形变量,MATLAB中定义变量的问题

    题目: MATLAB中定义变量的问题 比如说可以用syms定义 >> syms x11 x12 x13 x14 >> syms x21 x22 x23 x24 >> ...

  2. Js批量定义变量及使用

    1.前段开发中需要定义很多变量,并且变量都比较类似,比如pageNo1,pageNo2,pageNo3,,Js可以循环定义变量 var liLength = $(".news-module ...

  3. 普通变量和数组作为函数参数的区别

    1.在普通变量作为函数参数时,形参变量和实参变量是由编译系统分配的两个不同的内存单元.在函数调用时发生的值传送是把实参变量的值赋给形参变量. 2.在用数组名作为函数参数时,不是进行值得传递,即不是把是 ...

  4. python 批量创建变量_Python批量生成和调用变量

    这几天写代码中遇到的一个常见问题,在Python 中如何批量的生成一些变量,如生成变量X1, X2, X3 ,并在后续的方法中调用,完成赋值.取值等操作.这个问题也算是常见的吧,之前遇到过,也不了了之 ...

  5. matlab中变量a无法识别,MATLAB 中定义变量名,不能出现以下哪种符号?

    [判断题]为客人开车门时,所有客人都应该护顶. [多选题]下面选项中属于常见典型旅游空间布局模式有() [单选题]经过( )可使株形紧凑或繁茂,有效地调节作物体内营养分配,控制植株生长和结果范围,有利 ...

  6. python返回变量类型_Python指定函数参数、返回值类型报错是咋了?

    Leetcode刷题给的默认函数格式是这样的: Class Solution: def coinChange(self, coins: List[int], amount: int) -> in ...

  7. java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性

    如标题所述,这篇文章主要讲述Thymeleaf中的内置对象(list解析.日期格式化.数字格式化等).定义变量.获取URL的参数和在页面标签中自定义属性的应用. 如果对Thymeleaf的基本使用.m ...

  8. c语言函数的参数是结构变量,何去运用结构体变量和结构的变量的指针作为函数的参数...

    在C语言中我们如何去运用结构体变量和结构的变量的指针作为函数的参数呢,其实我们对于结构体的变量是有一定的了解的,他们就是将一个结构体变量的值传递给另外一个函数,那么这种有三种方法,希望大家都能够了解一 ...

  9. array函数参数 scala_3小时Scala入门

    〇,编程环境 1,安装Java 2,配置Java环境变量 3,安装Scala 4,配置Scala环境变量 参考文末阅读原文链接. 一,算术运算 二,输入输出 输出:println,print,prin ...

最新文章

  1. Keypress - 捕获键盘输入的JavaScript库
  2. leeds计算机科学理学硕士,利兹大学数学及计算机科学理学硕士研究生申请要求及申请材料要求清单...
  3. 分布式配置管理平台Disconf--转
  4. Thymeleaf select 使用 和多select 级联选择
  5. CS229 1 .线性回归与特征归一化(feature scaling)
  6. LeetCode 1333. 餐厅过滤器(Lambda排序)
  7. 2017.4.19 数列 思考记录
  8. 汇编:将指定的内存中连续N个字节填写成指定的内容
  9. 分享一个Ubuntu16.0.4安装MySQL5.7脚本
  10. android中的Handler和Callback机制
  11. UI控件Telerik UI for Silverlight发布R2 2019|附下载
  12. 神经网络前景背景分析,人工神经网络研究背景
  13. Ubuntu使用ZTE MF832S上网卡拨号上网
  14. 使用正片和负片为何会得到效果相同的PCB?
  15. 看猫解析专用可对接JSON解析弹幕播放器-所有后台功能一键管理
  16. 利用SPSS对数据转置和数据整理
  17. 中国信息消费产业前景动态及未来发展趋势预测报告(2022-2027年)
  18. python-docx教程
  19. 总结一下vue添加收藏取消收藏功能
  20. Linux报错 tar: Error Is Not Recoverable: Exiting Now

热门文章

  1. Ubuntu 22.04安装软件无图标
  2. 计算机基础教学效果分析,计算机应用基础的教学反思范文
  3. 大学计算机操作系统实验报告,四川大学计算机操作系统第四实验报告
  4. OpenStreetMap服务器搭建显著简化
  5. vue flv播放器
  6. OpenWrt Luci编写小技巧
  7. 某机构Python之 Numpy-Pandas-Matplotlib 视频笔记
  8. mysql实战:左表数据全部展示,关联表有关联数据返回1,没有关联数据返回0
  9. 【JAVA程序设计】(C00067)基于SSM(非maven)图书馆座位预约管理系统
  10. GITHUB设置代理——解决git clone下载过慢的问题