matlab中矩阵怎么在for循环中用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab中矩阵怎么在for循环中用相关的知识,希望对你有一定的参考价值。
matlab中矩阵在for循环中用可以参考以下:
% File:main.m
% 把程序 放到和 *.txt 同一目录下面
% listing 为一个结构体数据类型
listing = dir('*.txt');
N = 100;
allData = [];
for i = 1:N
fileName = listing(i).name;
fileData = load(fileName);
allData = [allData; fileData];
end
扩展资料:
for循环语法
1、语句最简形式为:
for( ; ; )
2、一般形式为:
for(单次表达式;条件表达式;末尾循环体)
中间循环体;
其中,表示式皆可以省略,但分号不可省略,因为“;”可以代表一个空语句,省略了之后语句减少,即为语句格式发生变化,则编译器不能识别而无法进行编译。
for循环小括号里第一个“;”号前为一个为不参与循环的单次表达式,其可作为某一变量的初始化赋值语句, 用来给循环控制变量赋初值; 也可用来计算其它与for循环无关但先于循环部分处理的一个表达式。
参考资料来源:百度百科-for循环
参考技术A for循环是一个重复的控制结构,可以有效地写一个循环,需要执行特定次数。语法:
在MATLAB中的 for循环的语法是:
for index = values
<program statements>
...
end
创建一个脚本文件,并键入下面的代码:
for a = 10:20
fprintf('value of a: %d
', a);
end
当运行该文件,它会显示以下结果:
value of a: 10
value of a: 11
value of a: 12
value of a: 13
value of a: 14
value of a: 15
value of a: 16
value of a: 17
value of a: 18
value of a: 19
value of a: 20
例子 2
创建一个脚本文件,并键入下面的代码:
for a = 1.0: -0.1: 0.0
disp(a)
end
当运行该文件,它会显示以下结果:
1
0.9000
0.8000
0.7000
0.6000
0.5000
0.4000
0.3000
0.2000
0.1000
0
矩阵是一个二维数字阵列。
在MATLAB中,创建了一个矩阵输入逗号或空格分隔的数字在每一行元素,并用分号来标记每行末尾。
例如,让我们创建一个4×5的矩阵:
a = [ 1 2 3 4 5; 2 3 4 5 6; 3 4 5 6 7; 4 5 6 7 8]
MATLAB 将执行上面的语句,并返回以下结果:
a =
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8 参考技术B 不是很明白想表达什么~
1. 在matlab中竟然避免使用for循环
2. for循环中矩阵随便怎么用都可以啊,这个和在不在for循环中没有关系
3. 如果你说的在for循环中用是指要访问矩阵的某个元素的话,那么M(i,j)就是矩阵M的第i行第j列的元素了~ 参考技术C 假如A是a行b列的矩阵
for(i=1:a)
for(j=1:b)
A(i,j)就可以用了
end
end本回答被提问者采纳 参考技术D 既然用matlab矩阵运算了,就尽量避免使用循环吧
matlab的循环会很慢
如果不是特殊情况,绝大多数的运算都能通过矩阵运算来实现的
Matlab:在for循环中排除零值矩阵单元的if条件
【中文标题】Matlab:在for循环中排除零值矩阵单元的if条件【英文标题】:Matlab: if-conditions to exclude zero-value matrix cells within for-loops 【发布时间】:2016-01-17 05:18:42 【问题描述】:我有一个矩阵 M:
M=rand(n,m)
和一个长度为 m^n 的数组 K
K=zeros(m^n,1)
数组 K 填充了通过对所有可能的 m^n 个单元格垂直组合的 n 行中的矩阵 M 的值求和而获得的值。长度为 m^n 的辅助数组索引包含对单元格组合的索引引用,以便索引数组的列索引指示矩阵 M 的行和索引数组的值 - 矩阵 M 的列。在下面的示例中对于 4x3 矩阵,Index 数组的第二行 1,1,1,2 对应于单元格 M(1,1)、M(2,1)、M(3,1) 和 M(4 ,2) 等:
Index =
1 1 1 1
1 1 1 2
1 1 1 3
1 1 2 1
…
然后使用该索引引用来计算存储在 K 中的每个单元组合的值(总和):
for i=1:m^(n)
for j=1:n
K(i)= K(i)+M(j,Index(i,j))
end
end
到目前为止,它工作正常。然而,我需要的是引入一个“if”条件,以便如果矩阵 M 的任何单元格等于零,那么包含此零值(单元格)的任何组合的值也将为零.我试图在 for 循环中引入它:
假设
M(1,1)=0
M(3,1)=0
然后
for i=1:m^(n)
for j=1:n
if M(j,Index(i,j))~=0
K(i)= K(i)+M(j,Index(i,j))
else
K(i)=0
end
end
end
此解决方案似乎不起作用,因为它无法识别与零值单元格关联的单元格组合,我无法找出解决方法。有谁知道如何解决这个问题?谢谢!
【问题讨论】:
【参考方案1】:如果我理解你的解释正确的话......
一旦您的代码发现矩阵元素等于 0,它应该跳出内部 for 循环,而不是继续求和。试试这个:
for i=1:m^(n)
for j=1:n
if M(j,Index(i,j))~=0
K(i)= K(i)+M(j,Index(i,j))
else
K(i)=0
break
end
end
end
您还应该注意,对于浮点数,例如由rand
产生的那些,它们可能不完全等于零。
【讨论】:
非常感谢,效果很好!!至于随机生成的数字不完全为零 - 在这种情况下这不是一个真正的问题,因为在算法的前面步骤中零值单元格被明确设置为零,但无论如何感谢您引起我的注意!以上是关于matlab中矩阵怎么在for循环中用的主要内容,如果未能解决你的问题,请参考以下文章
matlab 如何将for每循环一次产生的矩阵合并成一个大矩阵