写一个函数称为get_distance接受两个特征向量输入代表两个城市的名字。函数返回它们之间的距离作为输出参数称为距离。例如,调用get_distance(西雅图,华盛顿州的

68(30天)
函数距离= get_distance (x, y)
(~,~,生)= xlsread (“Distances.xlsx”);
:col_labels =生(1);
row_labels =生(:1);
试一试
距离=生{包含(row_labels y),包含(col_labels x)};
距离= 1;
结束
结束
错误
评估结果:incorrectNashville,TN和拉斯维加斯,NV
变量距离不正确的值。
评估结果:双incorrectRandom城市
变量距离不正确的值。
get_distance (“查塔努加,TN”,Meads,肯塔基州)返回1这是不正确的。

答案(22)

阿拉法特打出行云流水
函数距离= get_distance (a, b)
(~,~,生)= xlsread (“Distances.xlsx”);
:行=生(1);
坳=生(:1);
2 = 2:长度(行)
如果比较字符串(行(2))
信息产业部= 2;
打破;
结束
结束
jj = 2:长度(col)
如果比较字符串(col (jj), b)
njj = jj;
打破;
结束
结束
如果(strcmp()行(ii),) & & (strcmp (col (jj), b))
距离=生{信息产业部,njj};
其他的
距离= 1;
结束
结束
6个评论

登录置评。


马蒂斯著名Somp
马蒂斯著名Somp 2020年10月6日
多一个
函数距离= get_distance (A, B)
(数据txt) = xlsread (“Distances.xlsx”);
2 = 0;
jj = 0;
我= 2:长度(数据)
如果字符串(A) = =字符串(txt {1,})
2 =我;
结束
如果字符串(字符串(B) = = (txt {1,}))
jj =我;
结束
结束
如果(~ (jj) | | ~ (2))
距离= 1;
其他的
距离=数据(ii-1 jj-1);
结束

Olel应接不暇
Olel应接不暇 2020年5月1日
编辑:Olel应接不暇 2020年5月1日
函数距离= get_distance (city_1 city_2)
n = 0; m = 0;
(价值、名称)= xlsread (“Distances.xlsx”);
2 = 1:尺寸(名称,2)
如果(比较字符串(city_1名称(2,1)))
n = 2;
结束
结束
jj = 1:尺寸(名字,1)
如果(比较字符串(city_2名称(1,jj)))
m = jj;
结束
结束
如果(n = = 0 & & m = = 0 & & n = = 1米= = 1)
距离= 1;
elseif(n > 0 m > 0)
距离=价值(n - 1、m - 1);
其他的
距离= 1;
结束
2的评论
里克
里克 2022年3月16日
这不会是真的。 n 不能在同一时间0和1。为什么这个注释的代码块所收到upvote是我不清楚。

登录置评。


塔伊夫·艾哈迈德BIpul
塔伊夫·艾哈迈德BIpul 2020年5月28日
函数距离= get_distance (A, B)
[~,~,所有]= xlsread (“Distances.xlsx”);
p = strcmp (,);
q = strcmp(所有,B);
r = (p(:))总和;
s =总和(q (:));
如果~ (r = = 2 s = = 2)
距离= 1;
返回
结束
一个=找到(p = = 1);
b =找到(q = = 1);
距离= {((1)),(b) (1)};
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年7月20日
= = 2对我没有意义;它会让我感觉如果是= = 1意味着一个列匹配。
哦,等一下……原始(第三)输出的名字在第一行和第一列。的人写了上面的代码假定每个名称会出现完全一次标题行和一次在标题列,总共两次:这就是为什么2。的人还假设之间的顺序是完全相同的行和列。
距离矩阵不应认为是对称的。我不建议这个版本的代码。

登录置评。


放进Padha
放进Padha 2020年6月11日
函数距离= get_distance (x, y)
k = 1;
[~,~,所有]= xlsread (“Distances.xlsx”);
[r c] =大小(全部)
i = 1: r
j = 1: c
如果我= = 1 & & j = = 1
继续;
其他的
如果比较字符串(x,(我,1))= = 1 & & strcmp (y,所有(j)) = = 1
k = {i, j};
结束
结束
结束
结束
距离= k;
结束
2的评论
里克
里克 2020年9月1日
结果是你不能可靠地欺骗了这个页面,因为一些错误或缺陷的解决方案。金宝搏官方网站如果不是这样的话,我可能会更多的活跃在删除答案。

登录置评。


辛格Ankit chauhan
辛格Ankit chauhan 2020年11月29日
编辑:里克 2020年11月29日
函数距离= get_distance (city1 city2)[~, ~,生]= xlsread (“Distance.xlsx”)试一试city2 s = strcmp(生)
city1 g = strcmp(生)
(r1, c1) =找到(s = = 1)
(r2 c2) =找到(g = = 2)
距离=生{r1, r2}
距离= 1
结束

Gokul苏利耶萨勃拉曼尼亚
编辑:里克 2019年7月2日
函数距离= get_distance (a, b)
(~,文本,生)= xlsread (“Distances.xlsx”);
我= 2:尺寸(生,1)
如果比较字符串(文本{1}我,)
打破
结束
结束
如果我> =大小(生,1)
距离= 1;
其他的
j = 2:尺寸(生,2)
如果比较字符串(文本{1,},b)
距离=生{i, j};
打破
结束
结束
如果j > =大小(生,2)
距离= 1;
结束
结束
13个评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年2月17日
对于这个特定的作业问题,参考数据 定义 是存储在一个xlsx文件的格式
<空> < cityname1 > < cityname2 > < cityname3 >
< cityname1 > distance11 distance12distance13
< cityname2 > distance21distance22distance23
< cityname >的文本,如拉斯维加斯,内华达州和瓦瓦,安大略,距离是数字。
当你使用xlsread文件并要求第二输出,输出单元阵列的特征向量,与原始数据的特征向量存在文本,而空,原始数据数字。所以它可能看起来像
txt = {
[],“拉”,“瓦瓦”,秘鲁首都利马的
“拉”[][][]
“瓦瓦”[][][]
秘鲁首都利马的[][][]
}
当你使用三种{1,}你会因此初访问[],或一个城市的名字,“拉”,“瓦瓦”,“利马的”,你会读的行从txt # 1单元数组。txt {ROWNUMBER, COLUMNNUMBER}是一般形式。
使用字符串()在一个向量将它从一个字符向量是一个标量“字符串”对象。因此,线
如果字符串(A) = =字符串(txt {1,})
将特征向量在转换为字符串()对象;然后提取的内容列#我的第一行单元阵列命名 三种 并将内容转换成一个字符串()对象。然后使用字符串对象之间= =。
有人会这么做的原因是,= =定义字符串的字符串对象还真之间有相同的内容,和假如果字符串不相同的内容,与假返回如果他们是不同的,因为他们有不同的长度。所以字符串(LA) = =字符串(“瓦瓦”)是完美的代码,不会有问题。
但= = 之间定义特征向量以同样的方式,特别是,特征向量之间= =将会失败如果他们都有不止一个字符,长度不匹配。“拉”= =“瓦瓦”不会抱怨阵列尺寸不一致(即长度是不同的。)比较特征向量考虑他们可能是不同的长度,使用strcmp(),如比较字符串(“拉”,“瓦瓦”)

登录置评。


默罕默德Sadiq
默罕默德Sadiq 2020年5月7日
函数距离= get_distance (a, b)
(~,文本,生)= xlsread (“Distances.xlsx”);
我= 2:尺寸(生,1)
如果比较字符串(文本{1}我,)
打破
结束
结束
如果我> =大小(生,1)
距离= 1;
其他的
j = 2:尺寸(生,2)
如果比较字符串(文本{1,},b)
距离=生{i, j};
打破
结束
结束
如果j > =大小(生,2)
距离= 1;
结束
结束

艾伦•查柯
艾伦•查柯 2020年5月13日
函数d = get_distance (c1, c2)
[~,~,城市]= xlsread (“Distances.xlsx”);
(r、c) =(市)大小;
行=城市(1:结束,1);
坳=城市(1,1:结束);
ccr =排序(包含(行(2:结束),c1));
ccc =排序(包含(坳(2:结束),c2));
如果ccr的= = ccc
ir =找到(strcmp(行,c1));
ic =找到(strcmp (col c2));
d =城市{红外光谱、ic};
其他的
d = 1;
结束
5个评论

登录置评。


蒂莫西·西蒙·托马斯
蒂莫西·西蒙·托马斯 2020年5月21日
函数距离= get_distance (L1, L2)
[n ~ r] = xlsread (“matlab_dist.xlsx”);
i = 1; j = 1;
[R C] =大小(n);
(~ (strcmp (L1, r(1,))) & &我< = r)
我=我+ 1;
结束
(~ (strcmp (L2, r (j, 1))) & & j < = C)
j = + 1;
结束
j = j - 1; i =张;
如果(~ (strcmp (L1, r (1 + 1))) | | ~ (strcmp (L2, r (j + 1, - 1))))
距离= 1;
其他的
距离= n (i, j);
结束
结束

Ujjawal Barnwal
Ujjawal Barnwal 2020年6月7日
函数距离= get_distance (c1, c2)
(num txt生)= xlsread (“Distances.xlsx”);
= 0;b = 0;
2 = 2:337
如果比较字符串(txt {1, 2}, c1)
一个= 2;
elseif比较字符串(txt {1, 2}, c2)
b = 2;
结束
结束
如果& & b
距离= num (a - 1, b - 1);
其他的
距离= 1;
结束
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年6月7日
为什么是337年?
你的代码假设距离包含特定大小的数据。它还假设的行数和列是相同的。它进一步假设没有一个情况下,两个不同的城市碰巧发生在相同的行和列的数量。例如,
*苹果橘子葡萄柚
橙色203
葡萄柚130
苹果021
代码会失败(说)橙、葡萄柚,因为它假定当它发现橙色在第三列,它也不可能发生在第三行找到葡萄柚。

登录置评。


Vishesh Haria许下
Vishesh Haria许下 2020年6月7日
函数距离= get_distance (a, b)
(~,~,生)= xlsread (“Distances.xlsx”);
:行=生(1);
坳=生(:1);
2 = 2:长度(行)
如果比较字符串(行(2))
信息产业部= 2;
打破;
结束
结束
jj = 2:长度(col)
如果比较字符串(col (jj), b)
njj = jj;
打破;
结束
结束
如果(njj > 0 & & mii > 0)
距离=生{信息产业部,njj};
elseif(njj = = 1 & & mii = = 1)
距离= 1;
elseif(njj = = 0 & & mii = = 0)
距离= 1;
其他的
距离= 1;
结束
结束
错误:
距离= get_distance (g,佤邦,Miagmi, FL)
未识别的函数或变量“njj”。
错误get_distance(19)行
如果(njj > 0 & & mii > 0)
帮助我了解这个错误。
1评论
亮张
亮张 2020年6月24日
我认为你可能会删除两个elif条件命令和设置默认“信息产业部”和“njj”为0,那么它可以工作。

登录置评。


Md Nazmus Sakib
Md Nazmus Sakib 2020年6月20日
函数y = get_distance (city_1 city_2)
全球生;
(~,~,生)= xlsread (“Distances.xlsx”);
%获取城市的行
r_city = {};
i = 1:337
生r_city {1,} = {1,};
结束
%获取城市列
c_city = {};
j = 1:337
c_city {1, j} = {j, 1}原料;
结束
%搜索city_1
search_c1 = strcmp (c_city city_1);
%搜索行
2 = 1:337
如果(search_c1 (1, 2) = = 1)
打破
其他的
2 = 1;%如果城市没有发现二世将为1
结束
结束
%搜索city_2
search_c2 = strcmp (r_city city_2);
%搜索列
jj = 1:337
如果(search_c2 (1, jj) = = 1)
打破
其他的
jj = 1;%如果城市没有找到jj将为1
结束
结束
如果((2 = = 1)| | (jj = = 1))%如果没有找到这个城市
y = 1;
其他的
y =生{ii, jj} (1,1);
结束
结束

米纳迦JAYANTH AVADHANI
米纳迦JAYANTH AVADHANI 2020年7月28日
编辑:米纳迦JAYANTH AVADHANI 2020年7月28日
这是完美的。
函数距离= get_distance (city1 city2)
(~,~,生)= xlsread (“Distances.xlsx”);
:行=生(1);
坳=生(:1);
mi = 0; mj = 0;
我= 2:长度(行)
如果比较字符串(行(i), city1)
mi =我;
结束
结束
j = 2:长度(col)
如果比较字符串(坳(j), city2)
乔丹= j;
结束
结束
如果mi > 1 & & mj > 1
距离=生{mi,乔丹};
其他的
距离= 1;
结束
结束
3评论

登录置评。


Capulus_love
Capulus_love 2020年8月12日
编辑:Capulus_love 2020年8月12日
函数距离= get_distance (a, b)
(~,~,excel) = xlsread (“Distances.xlsx”);
:坳= excel (1);
行= excel (: 1);
x =大小(col)
y =大小(行)
col_count = 1;
row_count = 1;
我= 2:x (2) + 1
col_count = col_count + 1;
如果包含(col{我})= = 1
打破
结束
结束
j = 2: y (1) + 1
row_count = row_count + 1;
如果包含(行{j}, b) = = 1
打破
结束
结束
如果(col_count > 337) | | (row_count > 337)
距离= 1
其他的
距离= excel {row_count, col_count}
结束
结束
%为什么不存在的城市是没有解决…? ? ?
3评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年8月12日
如果(col_count > 337) | | (row_count > 337)
会发生什么,如果他们改变了数据文件,有500个城市(例如)?

登录置评。


燕李
燕李 2020年9月4日
函数距离= get_distance (ct1 ct2)
(~,~,生)= xlsread (“Distances.xlsx”);
:f_row =生(1);
f_col =生(:1);
国旗= false;
距离= 1;
n = 1:长度(f_row)
m = 1:长度(f_col)
如果字符串(f_row (n)) = = ct1 & &字符串(f_col (m)) = = ct2
国旗= true
距离=生{n, m};
结束
结束
结束
结束
2的评论
里克
里克 2020年9月4日
令人惊讶的是这个工作。
字符串({“foo”})= =“foo”
你为什么决定把这?它教什么?
为什么你设置一个标志,但不返回它或使用它在任何地方?

登录置评。


艾哈迈德·萨利赫
艾哈迈德·萨利赫 2021年3月28日
编辑:艾哈迈德·萨利赫 2021年3月28日
函数距离= get_distance (city1 city2)
[~,~,距离]= xlsread (“Distances.xlsx”);
num1 = 0;
num2 = 0;
s =大小(距离);
我= 2:(1)
逻辑= strcmp (city1,距离{我1});
如果逻辑= = true
num1 =我;
打破
结束
结束
j = 2: s (2)
logic2 = strcmp (city2,距离{1,j});
如果logic2 = = true
num2 = j;
打破
结束
结束
如果num1 = = 0 | | num2 = = 0
距离= 1;
返回
结束
距离= {num1, num2}的距离;
结束
7评论

登录置评。


Abhijeet辛格
Abhijeet辛格 2021年5月14日
编辑:Abhijeet辛格 2021年5月14日
函数距离= get_distance (x, y)
[~,~,一切]= xlsread (“Distances.xlsx”);
=一切(1:尺寸(一切,1),1);
b =一切(1,- 1:尺寸(一切,2));
j = 1:尺寸(一切,1)
l = 0;
如果比较字符串((j, 1), x)
l = j;
打破
结束
结束
i = 1:尺寸(一切,2)
k = 0;
如果比较字符串(b) (i), y)
k =我;
打破
结束
结束
如果k ~ = 0 & & l ~ = 0
s =所有的(l, k);
距离= {1};
其他的
距离= 1;
结束
结束
3评论
里克
里克 2021年5月15日
你认为是关键解决方案和上面的区别呢?
如果你想教育:评论是一个伟大的方式来解释你的代码在做什么。
另外:
=一切(1:尺寸(一切,1),1);
b =一切(1,- 1:尺寸(一切,2));
%是等价的:
=一切(:1);
:b =一切(1);

登录置评。


西尔瓦娜卡斯蒂略
西尔瓦娜卡斯蒂略 2021年6月3日
函数距离= get_distance (c1, c2);
在一切%读取excel文件
[~,~,一切]= xlsread (“Distances.xlsx”);
%找到将指数c1 readinf第一列
=找到(strcmp(一切(1,1:结束),c1))
%找到将指数c2读第一行
%比较字符串= =两个字符串输入吗?
b =找到(strcmp(一切(1:结束,1),c2))
%如果不存在任何c1和c2
如果isempty () | | isempty (b)
距离= 1
其他的
%将从细胞类转换为矩阵或双
基于指数%的距离值
距离= cell2mat(一切(a, b))
结束

Milad Mehrnia
Milad Mehrnia 2021年10月31日
函数距离= get_distance (a, b)
(num, txt) = xlsread (“Distances.xlsx”);
x = 0, y = 0;
我= 2:容积长度(txt)
如果比较字符串(txt {1,},)
x =我;打破;%最好使用,因为它大大减少了运行时间
结束
结束
j = 2:高度(txt)%最好使用分离函数j,因为它也显著降低了运行时间
如果比较字符串(txt {j, 1}, b)
y = j;打破;
结束
结束
如果~ x | | ~ y
距离= 1;
其他的
距离= num (x - 1, y-1);
结束
2的评论
Milad Mehrnia
Milad Mehrnia 2021年11月1日
内存上的矩阵,和ismember比你是正确的。你的评论后,我试过,结果是可怕的。刹车的时候一半。
真的谢谢你

登录置评。


齐亚•拉赫曼
齐亚•拉赫曼 2022年8月30日
嗨,伙计们,
请检查我的代码,请告诉我是否可以改善。
函数距离= get_distance (a, b)
(~、~、数据)= xlsread (“Distances.xlsx”);%读取文件和默认拥有其全部数据是原始数据在第三aurgument数据变量
z =大小(数据);%计算尺寸我们需要遍历第一coloumn和第一行
c = z (1,1);% c = no。的行
d = z (1、2);% d = no。的coloumn
我= 2:c%(1,1)的文件是空的所以从2行和coloumns的长度
e = strcmp(){1,},数据;%通过第一行检查和比较
如果e = = true%如果我们找到匹配记录其指数f通过“休息”,停止循环。
f =我;
打破;
结束
结束
j = 2: d
{j, k = strcmp(数据1},b);通过第一coloumn与b %检查
如果k = = true%如果我们找到匹配记录其指数l通过“休息”,停止循环。
l = j;
打破;
结束
结束
如果e = = true & & k = = true%如果都是真的,那么显示的距离指数(f、l) otherwisr距离= 1
距离= {f l}数据;
其他的
距离= 1;
结束
4评论

登录置评。


帕斯卡
帕斯卡 2023年6月15日9:17
我得到了这个解决方案的最后一点代码似乎相当丰满,你有建议改善代码吗?
函数(距离)= get_distance (c1, c2)
生= readcell (“Distances.xlsx”);
第一行=生(1、2:结束);
col1 =生(2:结束,1);
ind1 =找到(ismember(第一行,c1));
ind2 =找到(ismember (col1 c2));
如果isempty (ind1) | | isempty (ind2)
距离= 1;
其他的
说=生(2:结束,2:结束);
d = dis (ind1 ind2);
距离= cell2mat (d);
结束

类别

找到更多的在日期和时间帮助中心文件交换

下载188bet金宝搏


释放

R2016b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!