修改元素的矩阵指数(MATLAB)
5视图(30天)
显示旧的评论
我有一个元素的数量
米
例如
m = 4
。和维度的矩阵是广场
米*米
P =
1 2 3 4
2 3 4 3
3 4 3 2
4 3 2 1
使用下面的程序来取代指数
1、2、3……米
与这些:
m =输入(“初始化的元素个数”);%的元素矩阵
P =汉克尔(1:m m: 1:1);
%初始化的这些维度(m - 1 x m - 1)
一个= 0 (m - 1, m - 1, m - 2);
(::1)=眼睛(m - 1);%的第一子矩阵始终是一个单位矩阵P指数= 1
为k = 2: m - 1
(:,:,k) = circshift ((:,:, k - 1), 1, 2);%的其他这些指数m - 1 = 2
结束
(:,:,m) = 0 (m - 1);%的最后子矩阵指数= m(总是空)
%替代这些指数的1、2、……m P
N = 0 (m * (m - 1));
一个= num2cell (a [1 - 2]);
为2 = 1:m
为jj = 1: m
N ((m - 1) * (ii-1) + 1: (m - 1) * 2 (m - 1) * (jj-1) + 1: (m - 1) * jj) = {P (ii, jj)};
结束
结束
我添加这部分程序找到总是两个指标
和= m
。例如在的情况下
m = 4
指数是
1
和
3
找到
1 + 3 = m
指数= 0;
而总和(指数)~ = m
指数=兰迪([1 m - 1], [1,2]);
结束
因此,指数
2
这里没有使用。我们使用
1
,
3
和
m。
我需要添加一个prgram中的一部分
替换所有这些未使用的指标(在这个例子中指数2)零矩阵的矩阵n请我该怎么做。
接受的答案
沃斯
2022年3月11日
这是一个函数可以用来得到一双随机指数,这些指数和m,但从未(m / m / 2):
函数idx = get_random_index (m)
如果国防部(m, 2)% m是奇怪:不可能从兰迪得到m / 2 ()
idx =兰迪([1 m - 1]);从兰迪()%只使用结果
其他的% m甚至:可以从兰迪得到m / 2(),所以使用兰迪()
% 1和m - 2之间得到一个整数,然后增加
% 1如果是> = m / 2,所以最终你会得到一个随机指数
% 1和m - 1不包括m / 2之间
%如m = = 4:
%兰迪()返回1:idx = 1
%兰迪()返回2:idx = 3
%如m = = 6:
%兰迪()返回1:idx = 1
%兰迪()返回2:idx = 2
%兰迪()返回3:idx = 4
%兰迪()返回4:idx = 5
idx =兰迪([1 m - 2]);
如果idx > = m / 2
idx = idx + 1;
结束
结束
idx = [idx m-idx];% 2指数的总和是m
结束