我正在编写一个MATLAB函数来将数据读出到一个n维数组(可变维度大小).我需要能够访问Matrix中的特定点(例如,写入或读取它),但我不知道要指定多少索引.
目前我有一个current_point向量迭代指定每个索引的max_points向量,以及一个指定数组大小的向量.所以,例如,如果我想要一个大小为1000×15×3的三维数组max_points = [1000 15 3],并且current_point迭代[1, 1, 1]到[1000, 15, 3]([1, 1, 1]- > [1000, 1, 1]- > [1, 2, 1]- > [1000, 2, 1]- > ...).我希望能够做的是current_point作为矩阵的索引,如下所示:
output_matrix(current_point) = val
Run Code Online (Sandbox Code Playgroud)
但显然output_matrix([1 2 3]) = val会有类似的东西outputmatrix(1:3) = 30.我不能只使用虚拟变量,因为有时矩阵需要3个索引,其他时间4,其他时间2等,所以我需要一个可变长度的矢量.是否有一种简单的方法可以将矢量用作索引中的点?
可能重复:
如何更改矩阵中多个点的值?
我有一个矩阵A和三个相同长度的向量r,保存要分配的行c的索引,保存要分配的列的索引,并v包含要分配的实际值.
我想得到的是A(r(i),c(i))==v(i)所有人i.但是这样做
A(r,c)=v;
Run Code Online (Sandbox Code Playgroud)
例如,不会产生正确的结果,因为matlab将其解释为选择和的每个可能组合,r并c为其赋值
n=5;
A=zeros(n);
r=1:n;
c=1:n;
A(r,c)=1;
Run Code Online (Sandbox Code Playgroud)
产生一个矩阵,我想得到单位矩阵,因为我想要A(r(i),c(i))==1的每一个i,只有对角线上的元素才会受到影响.
如何在没有for循环的情况下实现所需的结果?
我对Matlab不太熟悉,所以提前为这个愚蠢的问题道歉.我想将数字1分配给矩阵的某些特定位置.我有一个行向量和相应的列向量.我试图多次为这些位置分配值.但是,它没有用.这是一个较小的代码示例.假设有一个4*4矩阵,我想将矩阵(1,1),矩阵(2,3)和矩阵(3,4)分配给1.这就是我所做的.
matrix = zeros(4,4);
row = [1 2 3];
col = [1 3 4];
matrix(row,col)=1;
Run Code Online (Sandbox Code Playgroud)
但是,我得到了答案
matrix=[ 1 0 1 1
1 0 1 1
1 0 1 1
0 0 0 0]
Run Code Online (Sandbox Code Playgroud)
谁能指出我在这里做错了什么?我将要处理的矩阵的实际大小为数千,因此我无法手动逐个分配这些位置.有没有办法使用行向量和列向量我必须分配值1?非常感谢你,
我想将索引向量转换为索引列中的索引的矩阵.
x = [2;1;3;1];
m = someFunc(x,3)
% m =
%
% 0 1 0
% 1 0 0
% 0 0 1
% 1 0 0
Run Code Online (Sandbox Code Playgroud) 我想在预定义的位置获得Matlab矩阵元素的向量.例如,我有以下内容
>> i = [1,2,3];
>> j = [1,3,4];
>> A = [1,2,3,4; 5,6,7,8; 9,10,11,12; 13,14,15,16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Run Code Online (Sandbox Code Playgroud)
我想要一个矢量,它会给我在Acorrespongin的位置的值i,j.我试过了
A(i,j)
ans =
1 3 4
5 7 8
9 11 12
Run Code Online (Sandbox Code Playgroud)
但这不是我想要的.我想得到以下内容
>> [A(i(1),j(1)); A(i(2),j(2));A(i(3),j(3))]
ans =
1
7
12
Run Code Online (Sandbox Code Playgroud)
什么是matlab语法?请避免建议循环或任何不是矢量化形式的东西,因为我需要快速完成.希望会有一些内置功能.
对于任何函数,我能够通过明确定义我期望的输出数来指示要返回的变量 [out1,out2,...,outn] = ...
编辑:能够最大化潜在的输出数量也很有用
示例问题
以下代码完全符合预期(是的,它是多余的myArray(IND) = 1;)
[I,J] = ind2sub(size(myArray),IND)
myArray(I,J) = 1;
Run Code Online (Sandbox Code Playgroud)
当我尝试直接传递函数参数时,我得不到我想要的结果
myArray(ind2sub(size(myArray),IND)) = 1;
Run Code Online (Sandbox Code Playgroud)
我有意义的myArray(I) = 1;时候得到了myArray(I,J) = 1;
题
如何在不明确定义输出参数的情况下指示返回多少输出变量?
我希望eval()家庭中的某些功能或某些类型转换[],{},(:), etc.可以解决问题,但我没有看到任何文档或者让它们中的任何一个工作.
我想根据行号和列号创建一个数组.
例如 :
row_number Column_number Value
1 1 5
3 2 10
4 6 4
7 5 66
Run Code Online (Sandbox Code Playgroud)
该数组应如下所示:
A=
5 0 0 0 0 0
0 0 0 0 0 0
0 10 0 0 0 0
0 0 0 0 0 4
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 66 0
Run Code Online (Sandbox Code Playgroud)
否则它将打印为零.