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循环求矩阵乘法

MATLAB中如何用for 循环将结果代入矩阵中?

matlab 如何将for每循环一次产生的矩阵合并成一个大矩阵

在ASP.NET中用for给DropDownList1赋值15-45所有数,怎么编写程序

matlab 二维矩阵for循环逐行赋值

如何在matlab中保存通过for循环生成的数据?